2014-02-19 73 views
0

我需要爲學校製作一個C應用程序,並且我的卡住了一點。我用一個文件填充我的結構,這個文件工作正常,除了它打印一個隨機整數的時間我猜?if語句中的結構變量

我的代碼:

char buffer[20]; 
int i; 
for(i = 0; i < 10; i++) { 
    fgets(buffer,20,fp); 
    apcWordList[i].pcWord = strdup(buffer); 
    apcWordList[i].cMaxScore = 0; 
    apcWordList[i].tTime = time(NULL); 
} 
fclose(fp); 

現在我想做的就是這個(sSecretWord這個詞的人猜測和得分,他得到了猜字分):

for(i = 0; i < 10; i++) { 
    fgets(buffer,20,fp); 
    if(apcWordList[i].pcWord == sSecretWord && score > apcWordList[i].cMaxScore) { 
     apcWordList[i].cMaxScore = score; 
     apcWordList[i].tTime = time(NULL); 
    } 
} 

但它崩潰,我真的很困惑如何比較變量,並在需要時改變它們。我希望我已經解釋得很好,我的英語可以很好地閱讀。

+2

錯字:'用於(ⅰ - 0; <10; i ++在)'應該是'爲(I = 0; I <10;我++)' – Nabla

回答

2

假設pcWordchar *,大多數情況下無法使用==來比較該指針。

C中沒有字符串數據類型,字符串永遠不會是單個值。

您必須使用strcmp()

if(strcmp(apcWordList[i].pcWord, sSecretWorD) == 0 && 
    score > apcWordList[i].cMaxScore) 

你的代碼的其餘部分沒有什麼意義,我害怕。循環出現拼寫錯誤,並且fgets()if之間沒有關聯。我不認爲fgets()應該在代碼的第二部分。

+0

好我試圖的strcmp()函數和它的工作。這應該幫助我在正確的方向謝謝你 – Jop

0

下面的表達你的if條件

apcWordList[i].pcWord == sSecretWord 

比較他們評估的內存地址,而不是存放在這可能是你想要的那些內存位置的值。您應該使用strcmp來比較上面兩個變量指向的字符串。

strcmp(apcWordList[i].pcWord, sSecretWorD) == 0