if语句中的结构变量

时间:2014-02-19 13:22:24

标签: c structure

我需要为学校制作一个C应用程序而且我会陷入困境。我用一个工作正常的文件填充我的结构,除了它只是打印一个随机整数的时候我猜?

我的代码:

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 :(得分:2)

假设pcWordchar *,您无法在大多数情况下使用==来比较该指针。

C中没有字符串数据类型,字符串永远不是单个值。

您必须使用strcmp()

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

其余的代码没什么意义,我很害怕。循环有拼写错误,fgets()if之间没有连接。我认为fgets()根本不应该在代码的第二部分。

答案 1 :(得分:0)

if条件

中的以下表达式
apcWordList[i].pcWord == sSecretWord

比较它们评估的内存地址,而不是存储在那些内存位置的值,这可能是你想要的。您应该使用strcmp来比较上面两个变量所指向的字符串。

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