所以我在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函数,以及一些更具体的内容,那么我将非常感激!
答案 0 :(得分:2)
在获取每一行(进入'filedata')之后,只需使用 strstr 函数检查它是否包含子字符串“#A#”等。
如果 strstr 找到子字符串,它将返回指向它的指针,否则它将返回一个NULL指针。
所以你应该这样写:
if ( strstr(filedata, "#A#") == NULL )
printf("Error\n");
但是由于您正在查看此子字符串的整个文件,因此在得出结论错误之前,需要检查所有行。