我是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;
}
最佳答案
strcpy()
复制字符串。您应该使用strcmp()
来比较两个字符串。
其次,当您从/usr/share/dict/words
中读取行时,在末尾有一个换行符。您需要删除换行符(在while之后和if之前添加此项):
line[strlen(line) - 1] = '\0';
或者将其与
userword\n
进行比较。