3

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

当然它不起作用,但我对如何进行有点迷失,我找不到关于这个问题的更多信息。

你能帮忙的话,我会很高兴,

谢谢

4

1 回答 1

5

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

但是请注意,这并不是最便携的解决方案。

另外,请注意您要乘以iwidth因为如果您没有方阵,您的计算将无法正常工作。

没有必要拥有sizeof(char),因为char无论字节大小如何, a 的大小都被定义为 1。

于 2016-06-07T23:23:30.097 回答