将uint8_t连接到char *

时间:2016-06-07 23:18:57

标签: 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]

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];
            }
}

当然它不起作用,但我有点迷失如何继续,我无法找到有关此问题的更多信息。

任何帮助都会很好,

感谢

1 个答案:

答案 0 :(得分:5)

由于您正在尝试打印字符串,因此需要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。