2014-02-15 44 views
1

我在閱讀文本文件,並且知道文本文件有多少行。我使用fgets來讀取一行,然後strtok將它分解成大塊。我正在嘗試閱讀該行的第一個字符,並在「P」或「A」時採取行動。我假設我可以將行視爲字符數組。對不起,如果這個問題是超級基礎。我可以告訴形式警告我做錯了什麼。有沒有更好的方法來做下面的事情?從字符串中製作字符

char line[1024]; 


while (i < LINE_MAX) 
    { 
     fgets(line, sizeof (line), fp); 

     strtok(line," "); 
     printf("%c",line[0]); 
     if (line[0] == "P") 
      printf("the letter is P\n");   
     if (line[0] == "A") 
      printf("the letter is A"); 
} 

thread.c:在函數 '主': thread.c:96:15:警告:[默認啓用]指針和整數之間的比較 thread.c:96:15:警告:比較字符串文字導致未指定的行爲[-Waddress] thread.c:98:15:警告:指針和整數之間的比較[默認情況下啓用] thread.c:98:15:warning:與字符串文字的比較導致未指定行爲[-Waddress] 編譯成功完成。

+1

字符文字(例如''P'')應該被單引號括起來,而不是雙引號。 –

+0

或者(但不太優化),如果比較字符串是他所追求的,OP可以使用'strncmp(line,「P」,1)「。 – Diti

+0

感謝您的快速響應! – user3287789

回答

2

你需要一個char圍繞單引號的C.

if (line[0] == 'P'){} 

""用於字符串。

+0

所以要清楚,當我訪問字符串數組的元素時,我需要使用單引號。我假設如果(行==「P」)將是正確的,如果我比較整個字符串呢? – user3287789

+1

對於'char'使用單引號。比較字符串使用'strcmp'函數。 – haccks

+0

真的很感謝提示! – user3287789

0

我認爲它應該工作但只有當你刪除雙引號(「」),因爲它們用於字符串不用於字符。而不是line[0] == "P"使用line[0] == 'P'