我是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;
}
答案 0 :(得分:3)
strcpy()
复制一个字符串。您应该使用比较两个字符串的strcmp()
。
其次,当您从/usr/share/dict/words
读取该行时,最后会有一个换行符。您需要删除换行符(在if之后和if之前添加此行):
line[strlen(line) - 1] = '\0';
或将其与userword\n
进行比较。
答案 1 :(得分:0)
我建议strncmp()
执行此操作,因为fgets()
包含换行符:
if(!strncmp(line, "userword", strlen(line) - 1) )