3

私はCプロジェクトに取り組んでいます。私はCが初めてなので、これが簡単な質問であれば許してください。

さまざまなchar **値を含む配列です。すべての値の中で、strcmp でコア ダンプを継続する値を除いて、値に含まれるものに問題はありません。

以下は私のコードです:

if (strcmp(reportParameterArray[P_UNIQUECOLS],'Y') != 0)
{
    //Do something
}

P_UNIQUECOLS値を取得する場所のインデックスである列挙型です。GDB の値を見ると、値が含まれているか、Yまたは含まれていることがわかりますNが、何らかの理由でアプリがクラッシュしています。

ご協力いただきありがとうございます。

4

3 に答える 3

11

2 つの引数を取るため、 which は"Y"文字列リテラルであり、'Y'which はリテラルではありません。charstrcmp()const char*

高レベルの警告を使用してコンパイルし、それらを無視しないでください (できればエラーとして扱います)。

于 2013-05-31T09:23:29.517 に答える
2

'Y'は単一の文字でありstrcmp、ポインターが必要です。コンパイラが少なくとも警告を出さない場合は、正しいオプションでコンパイラを使用していません。

"Y"の代わりに使用し'Y'ます。

于 2013-05-31T09:25:10.870 に答える
2

はい、strcmp は両方のパラメーターを文字列として受け取ります。

アプリケーションがクラッシュし、セグメンテーション違反が発生している場合は、許可されていないメモリ ロケーションにアクセスしていることを意味します。「reportParameterArray」にメモリが割り当てられているかどうかを確認してください。

于 2013-05-31T09:27:16.557 に答える