2014-05-03 78 views
0
FILE *t; 
t = fopen(argv[8], "r"); 
fgets(tmp, 2048, t); 

我在每行讀到的內容就像這樣「l 23 23」是一個字母和一些數字(int或float),取決於天氣「l」是「a」「b 「或」c「。從字符數組中獲取值

我試過了,但不能比較tmp [0]和一個字母。

tmp[0] =="t" 

我肯定知道「T」是存在於文件中,但它總是給false

如何比較並提取後面的數字? PS:我知道在每條線上預計有多少個數字和類型,具體取決於tmp[0]的值。

+3

嘗試'tmp [0] =='t'' –

+0

如果要比較一個字符,請使用''t'',而不是'「t」'(單引號,而不是雙引號)。 – AntonH

+3

**打開編譯器警告。**沒有任何藉口。打開該死的警告,並注意它們。 (並且下次閱讀這個初學者的教程**) –

回答

1

如果你想的第一個字符tmp與性格'x'比較,然後使用:

if (tmp[0] == 'x') 
{ 
    ... 
} 

如果你想整個串與串"xyz"比較tmp,然後使用:

if (strcmp(tmp,"xyz") == 0) 
{ 
    ... 
} 

幕後:

  • 在代碼中使用雙引號字符串時,編譯器會用指向該字符串在運行時駐留的內存空間的開始位置的指針替換它。
  • 因此,通過tmp[0] == "t",您實際上試圖將單個字符(通常爲8位數據)與內存地址(通常爲32或64位數據,取決於您的系統)進行比較。
1

如果要比較一個這樣的字符,請使用't'而不是"t"(單引號,而不是雙引號)。