【发布时间】:2014-03-28 15:25:09
【问题描述】:
我是 C 的新手,我希望编写一个程序来检查用户输入的单词是否是合法单词。我已经搜索了 stackoverflow 的建议,但很多都是针对特定情况的。请在我被激怒之前,我知道这种语法不正确,但正在寻找一些关于如何修复它的建议。我的主要问题是如何告诉程序检查下一行(在“\0”之后)。也许while 条件不是告诉C 检查的最好方法,直到没有更多行存在。在下面的代码中,我有一个“userword”的示例比较字符串,我用它来测试,但最终这将是用户输入的变量。
#include <stdio.h>
#include <string.h>
int main (void)
{
FILE *fp;
fp = fopen("/usr/share/dict/words", "r");
char line[50];
while(fgets(line,50,fp) != NULL)
{
if(!strcpy(line,"userword"))
{
printf("Word exists\n");
return 0;
}
}
printf("Word not found, try again.\n");
return 0;
}
【问题讨论】:
-
直觉上似乎我需要另一个嵌套在“while”循环中的循环,它在找到每个“\0”后检查文件中的下一个字符串。我大概可以弄清楚如何寻找那个结尾字符,但不确定如何进入下一行。或者 C 是否将此文件视为一个连续的字符串,所以我只需要检查每个 "\0" 之间的字符?
-
strcpy()?你是说strcmp()? -
@jfly 嗯,是的。我知道我不应该在 102 发烧的情况下这样做。非常感谢老兄
-
正在解决的具体问题,从长远来看,您可能想要一份 Jon Bentley 的Programming Pearls;第一版有一章介绍了这个过程,并描述了从原型到可用程序的过程。此外,“词干”字段对于存储在字典中会浪费的单词很有用。