0

次の関数のデータ配列に不適切な値があるという問題があります(メモリの場所のように見えます):

int
GPIO::GetValue() {
    char data[1];

    if (read(_valuefd, data, 1) < 0) {
        perror("Error on reading value fd");
        return -1;
    }

    printf("int GPIO::GetValue() %s\n", data);

    if (strcmp(data, "1") == 0) {
        return GPIO_VALUE_ON;
    }
    if (strcmp(data, "0") == 0) {
        return GPIO_VALUE_OFF;
    }

    return -1;
}

完全なソース

printfの結果:

int GPIO::GetValue() 0cx$??ݾ??˶8@l

これで何が問題なのかわかりません。正常に動作する単純なプログラムで同じコードを抽出しました。同じことを行い、正常に動作する他の関数GPIO::GetDirectionもあります。メモリ、ポインタ、割り当ての問題があると思います。

何がうまくいかないのですか?

ボードー

4

3 に答える 3