Jos*_*rre 3 c pointers char uint8t
我真的很新C和我有一点复杂从各种uint8_t创建一个char*
我的想法是创建一个char*,在每个位置我放置一个数字形成一个矩阵
例如,如果我有一个矩阵:
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
Run Code Online (Sandbox Code Playgroud)
我喜欢char*那个 "01234567890123456"
我正在做什么它不起作用是:
char* string = malloc(sizeof(char)*matrix->height*matrix->width);
for (int i = 0; i < matrix->height ; ++i) {
for (int j = 0; j < matrix->width ; ++j) {
string[i*matrix->height+j] = matrix->value[i][j];
}
}
Run Code Online (Sandbox Code Playgroud)
当然它不起作用,但我有点迷失如何继续,我无法找到有关这个问题的更多信息.
你能帮忙的话,我会很高兴,
谢谢
由于您正在尝试打印字符串,因此需要使用ASCII字符0.所以,只需添加'0'到每个数字,就像这样
char* string = malloc(sizeof(char)*(matrix->height*matrix->width + 1));
for (int i = 0; i < matrix->height ; ++i) {
for (int j = 0; j < matrix->width ; ++j) {
string[i*matrix->width+j] = matrix->value[i][j] + '0';
}
}
string[matrix->height*matrix->width] = 0; //null terminator
Run Code Online (Sandbox Code Playgroud)
但请注意,这并不是最便携的解决方案.
此外,请注意要乘i用width,因为如果你没有一个方阵的计算将无法正常工作.
这是没有必要的sizeof(char),因为char无论字节大小如何,a的大小都被定义为1.