检索/比较文件中的字符串和用户文本

时间:2014-03-28 15:25:10

标签: c fopen fgets strcpy

我是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;
}

2 个答案:

答案 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) )