2

編集:これは重複しているため、そのようにフラグを立てました。[質問]なぜ C で "a" != "a" なのですか?

そのため、構造体内のフィールドに応じて特定のメッセージを出力しようとしています。フィールドには文字列「1」が含まれています。

私が実行するたびにprintf("%s", record.fields[2]); 、出力は次のとおりです1。フォーマットの警告はありません。

ただし、対応する文字列 (この場合は「1」) に対してフィールドをチェックすると、チェックに失敗します。

if (record.fields[2] == "1") {
    printf("The field is 1!");
}
4

1 に答える 1

2

strncmp文字列を比較するには、次を使用する必要があります。

if (strncmp(record.fields[2], "1", 1) == 0) ...

strcmp2 つの文字列が同一の場合はゼロを返すため、ゼロと比較する必要があります。

ただし、文字列を比較していないように見えます。むしろ、文字列内の特定の文字を探しています。この場合、文字列リテラル (一重引用符付き) の代わりに文字定数を使用する必要があります。

if (record.fields[2] == '1') ...
于 2013-04-20T02:51:01.587 に答える