如何检查字符串是否在文件中

时间:2013-11-29 04:18:23

标签: c arrays string strcmp

我是C的新手,我正在试图弄清楚如何在一个包含多个数字和单词的文件中搜索特定字符串及其后面的数字。

我正在使用的输入文件如下所示:

TREES 2
BENCHES 5
ROCKS 10
PLANTS 8

我知道如何让函数读取一个字符串,我知道如何比较两个字符串,但我不知道如何将它们放在一起或如何设置数组以读取整个文件。

我一直在使用strcmp,但我不知道如何初始化我想要查找的字。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

#include <stdio.h>

int main(void){
FILE *fp;
char *searchString="ROCKS";
fp = fopen("myfile.txt", "r");
char *buf[100];
int myNumber = -1;
while((fgets(buf, 100, fp)!=NULL) {
  if(strstr(buf, searchString)!=NULL) {
    sscanf(buf + strlen(searchString), "%d", &myNumber);
    break;
  }
}
printf("After the loop, myNumber is %d\n", myNumber);
fclose(fp);
}

免责声明 - 未经测试。应该关闭...

答案 1 :(得分:1)

创建一个包含要搜索的单词的数组。创建一个外部循环,一次在一个字符偏移量的文件数据流中前进。创建第二个内部循环,迭代您要搜索的术语数组。内循环根据外循环提供的数据检查数组中的每个项。使用strncmp将每次比较的长度限制为要搜索的单词的长度。匹配时,检查源缓冲区中的以下字符,以确保它不会否定匹配。