2016-08-14 7 views
2

私はcharポインタに関する質問があります。ポインタの最初の文字

私はfgetsを使って、Cでファイルを読んでいます。

char configline[configmax_len + 1]; //configmax_len is the max value I need 
while(fgets(configline, sizeof(configline), config){ //config is the file 
    char *configvalue = strtok(configline, " "); 
    if (configvalue[0] == "#"){ 
     continue; 
    } 
    … 
} 

char * configvalueが読まれている現在の行へのポインタである:あなたは私が何をしたいのかを理解することができますので、これは簡単な概要です。私がチェックしたいのは、行の最初の文字が "#"であるかどうかです。

if文を実行すると:if (configvalue[0] == "#")、コンパイラはエラー:comparison between pointer and integerをスローします。

ポインタが指す文字列の最初の文字が特定の値であるかどうかを確認するにはどうすればよいですか?

+6

は= 'はstrcmp()'ではなく '=='(そう 'の場合(strcmpの(のConfigValue、 "#")とCでの文字列を比較コンパイルする必要があり

if (configvalue[0] == '#'){ 

を使用してみてください= 0) 'が正しいかもしれません。そして、 "#"は文字列です。 ''# ''文字を比較したい場合は、二重引用符ではなく、一重引用符を使用してください( 'if(configvalue [0] == '#')')。 –

+0

ジョナサン、最後の発言は、単一引用符で助けてくれました – Dezzy

答えて

5

が、これがうまく

4

単一文字を示すには一重引用符を使用してください。二重引用符は文字列を意味し、最初の文字へのポインタで表され、したがってエラーメッセージです。

+0

ありがとう、それは私の問題を解決しました。あなたの答えを参考にして投票するのが大好きですが、十分な評判はありません。 :( – Dezzy

1

strtokは、文字列を終了NULへのポインタを返しますが、あなたは==使用して文字列定数でこれを比較している:

:あなたのような何かができるので、

if (configvalue[0] == "#") 

まず、configvalueがポインタであります

if (*configvalue == '#') 

ポインタを間接参照し、出力文字列の最初の文字を取得するには。

関連する問題