读取 .txt 文件中的文字不起作用 C

Reading words of a .txt file not working C

我想在 .txt 文件中搜索特定的词。

例如文件包含 "Jon Miller, Andy Miller, Apu McDawn" 我想在此文件中搜索 "Miller" 它发生的频率。 然后它应该显示数字 (num) "2"

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

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

    FILE *in_file = fopen("test.txt", "r"); //reading the words

    if (in_file == NULL)
    {
        printf("Dataerror\n"); //if word not found
        exit(-1);
    }

    else {
        scanf("%s", word);
        printf("%s\n", word);

        while(!feof(in_file))//search for the word

        {
            fscanf(in_file,"%s", string);
            if(!strcmp(string , word))//if hit a word
            num++;
        }

        printf( "%d Hit \n" ,num );
    }
    return 0;
}

我的朋友,我刚刚将函数 strcmp 更改为 strncmp。 & 有用。 这两个函数都比较两个字符串。 strcmp() 将整个字符串向下比较到末尾,而 strncmp() 仅将 strings.nction strcmp 的前 n 个字符与 strncmp.

进行比较

他们 return 有点古怪。基本上它是字符串的差异,所以如果字符串相同,它将 return 为零(因为差异为零)。如果字符串不同,它将 return 非零;基本上它会找到第一个不匹配的字符并且 return 如果字符串中的字符小于单词中的相应字符则小于零。如果字符串中的字符大于单词中的字符,它将 return 大于零。

 #include <stdio.h>
 #include <stdlib.h>
 int main(int argc, char const *argv[])
 {   
int num =0;

char word[100];

char *string;

FILE *in_file = fopen("ser.txt", "r"); //reading the words

if (in_file == NULL)
{
    printf("Dataerror\n"); //if word not found
    exit(-1);
}

else {
    scanf("%s", word);
    printf("%s\n", word);

    while(!feof(in_file))//search for the word

    {
        fscanf(in_file,"%s", string);
        if(!strncmp(string , word))//if hit a word
        num++;
    }

    printf( "%d Hit \n" ,num );
}
return 0;

}

您还没有为 string 分配任何内存。变化

char *string;

char string[100];

或者动态分配内存

string=malloc(100);

并在使用后释放它

free(string);

也改

while(!feof(in_file))

while(fscanf(in_file,"%s", string))

并删除此循环体内的 fscanf。阅读 this 以了解我为何进行此更改。并在您的程序中包含 string.h