允许用户在文件中搜索单词的程序

时间:2013-03-19 21:44:01

标签: c file

我正在尝试创建一个允许用户输入单词的程序,然后程序在文件中搜索输入的单词。我相信在我的程序中发生的事情是,当我输入单词时,它不会从char数组的0开始我进入

#include <stdio.h>
#include <stdlib.h>



int main(int argc, char const *argv[])
{
int num =0;
char word[2000];
char *string;

FILE *in_file = fopen("words.txt", "r");
//FILE *out_file = fopen("output.txt", "w");

if (in_file == NULL)
{
    printf("Error file missing\n");
    exit(-1);
}

while(word[0]!= '0')
{
    printf("please enter a word(enter 0 to end)\n");
    scanf("%s",word);

    while(!feof(in_file))
    {
        fscanf(in_file,"%s",string);
        if(!strcmp(string,word))//if match found
        num++;
    }
    printf("we found the word %s in the file %d times\n",word,num );
    num = 0;
}

return 0;
 } 

有人可以帮助我,让它重新进入正确的位置吗?那么当它比较正确的单词时呢?

1 个答案:

答案 0 :(得分:2)

您忘记为char *string;申报内存。您的程序尝试使用fscanf(in_file,"%s",string);在未预留的内存中写入未定义的行为,然后很可能会崩溃。

char *string;替换为char string[ MAX_WORD_LENGTH ]

还有许多其他问题,例如,您的搜索可能仅在第一次尝试时起作用,因为您每次都在阅读文件,一旦您点击EOF,您将不再阅读。您应该在每次搜索时使用fseek将位置指示器设置到文件的开头。

fseek ( in_file, 0, SEEK_SET );

同样使用strstr代替 strcmp 可能会产生更好的结果。