我是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进行比较。

07-24 09:46
查看更多