将 uint8_t 连接到一个 char*
Concatenating uint8_t to a char*
我真的是 C 的新手,我在从各种 uint8_t
创建 char* 时遇到了一些麻烦
我的想法是创建一个 char*,在每个位置放置一个数字形成一个矩阵
例如,如果我有一个矩阵:
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
id 就像一个 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];
}
}
当然它不起作用,但我对如何进行有点迷茫,我找不到有关此问题的更多信息。
任何帮助都会很好,
谢谢
由于您要打印字符串,因此需要 0
的 ASCII 字符。所以,只需将 '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
请注意,但这并不是最便携的解决方案。
另外,请注意您要将 i
乘以 width
,因为如果您没有方阵,您的计算将无法正确进行。
没有必要sizeof(char)
,因为无论字节大小如何,char
的大小都定义为1。
我真的是 C 的新手,我在从各种 uint8_t
创建 char* 时遇到了一些麻烦我的想法是创建一个 char*,在每个位置放置一个数字形成一个矩阵
例如,如果我有一个矩阵:
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
id 就像一个 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];
}
}
当然它不起作用,但我对如何进行有点迷茫,我找不到有关此问题的更多信息。
任何帮助都会很好,
谢谢
由于您要打印字符串,因此需要 0
的 ASCII 字符。所以,只需将 '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
请注意,但这并不是最便携的解决方案。
另外,请注意您要将 i
乘以 width
,因为如果您没有方阵,您的计算将无法正确进行。
没有必要sizeof(char)
,因为无论字节大小如何,char
的大小都定义为1。