2016-08-14 62 views
2

我有一個關於char指針的問題。指針的第一個字符

我正在閱讀C文件,使用fgets。這是一個簡短的概述,可以讓你瞭解我想做些什麼:

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語句時:編譯器會拋出一個錯誤:comparison between pointer and integer

如何檢查指針所指向的字符串的第一個字符是否爲某個值?

+6

比較C字符串與'的strcmp()','不'==(所以'如果(STRCMP(configvalue, 「#」)= = 0)'可能是對的)。 ''「#」'是一個字符串;如果你想比較字符''#''使用單引號,而不是雙引號(所以if(configvalue [0] =='#')'可能是正確的)。 –

+0

謝謝jonathan,最後一句話幫助了單引號 – Dezzy

回答

5

嘗試使用

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

這應該編譯很好

4

使用單引號表示單個字符;雙引號表示字符串,它由一個指向第一個字符的指針表示,因此是錯誤消息。

+0

謝謝你,解決了我的問題。我很樂意爲你的答案投票,但我沒有足夠的聲望。 :( – Dezzy

1

的strtok返回的指針指向終止字符串NUL,但你使用==與字符串常量比較這樣的:

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

首先,configvalue是一個指針,所以你可以這樣做:

if (*configvalue == '#') 

取消引用指針並獲取輸出字符串中的第一個字符。