3

私はCに本当に慣れていないので、さまざまなuint8_tからchar *を作成するのに少し複雑です

私の考えは、各場所に数値を行列から配置する char* を作成することです

たとえば、次のマトリックスがあるとします。

[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]

id like a char* thats"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

ただし、これは最も移植性の高いソリューションではないことに注意してください。

また、正方行列がないと計算が正しく機能しないため、iを掛けたいことに注意してください。width

a のサイズはバイトサイズに関係なく 1 と定義されてsizeof(char)いるため、を持つ必要はありません。char

于 2016-06-07T23:23:30.097 に答える