在C中阅读和检查文件的内容

时间:2018-01-31 06:38:45

标签: c file

所以我在C中编写一个程序,它接受一些命令行参数,并且还读取一个文件并将其打印到标准输出。到目前为止,这是我的代码:

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

int main( int argc, char* argv[] ) {
char* file_path;
float a;
float b;
char filedata[200];
if (argc != 4) {
    printf("Error: 4 arguments are required.\n");
    return -1;
}
file_path = argv[1];
a = atof(argv[2]);
b = atof(argv[3]);
if( a == 0.0 ) {
printf("Error: bad float arg\n");
return -1;
}
if( b == 0.0 ) {
printf("Error: bad float arg\n");
return -1;
}
FILE* fp = fopen( file_path, "r");
if( fp == NULL ){
    printf( "Error: bad file; %s\n", file_path);
    return -1;
}
while( fgets( filedata, 200, fp ) ){

 printf("%s", filedata);        
}
    fclose(fp);
}

在最底层我开始阅读文件。我要做的是找到包含字符的文件&#34; #A#&#34;和&#34; #B#&#34;然后在包含这些字符的文件不存在时打印错误消息。

不幸的是,一个简单的if语句在这种情况下不起作用,因为我没有检查相等性,而是检查是否存在某些内容。

如果有人能告诉我任何能够阅读和检查文件内容的C函数,以及一些更具体的内容,那么我将非常感激!

1 个答案:

答案 0 :(得分:2)

在获取每一行(进入'filedata')之后,只需使用 strstr 函数检查它是否包含子字符串“#A#”等。

如果 strstr 找到子字符串,它将返回指向它的指针,否则它将返回一个NULL指针。

所以你应该这样写:

if ( strstr(filedata, "#A#") == NULL )
    printf("Error\n");

但是由于您正在查看此子字符串的整个文件,因此在得出结论错误之前,需要检查所有行。