我意识到这是一个非常简单的问题,我希望能够通过在互联网上搜索找到答案,但我不能。 我想要做的只是在文件中读取,但忽略以哈希开头的注释。 所以
FILE *fp_in;
if((fp_in = open("file_name.txt","r")) ==NULL) printf("file not opened\n");
const int bsz = 100; char buf[bsz];
fgets(buf, bsz, fp_in); // to skip ONE line
while((fgets(buf,bsz,fp_in))! ==NULL) {
double x,y,x;
sscanf(buf, "%lf %lf %lf\n", &x,&y,&z);
/////allocate values////
}
所以可以跳过文件中的1行,但是我有几行的文件由我需要跳过的散列键继续。有人可以帮我这个,我似乎无法找到答案。 干杯
答案 0 :(得分:1)
将if (buf[0] == '#') continue;
添加到循环的开头。
答案 1 :(得分:0)
如果评论标记是该行中的第一个字符,
while((fgets(buf,bsz,fp_in))! ==NULL) {
if (buf[0] == '#') continue;
double x,y,x;
sscanf(buf, "%lf %lf %lf\n", &x,&y,&z);
/////allocate values////
}
会忽略评论行。如果不是那么简单,那么就无法避免扫描该行以征求意见。
答案 2 :(得分:0)
FILE *fp_in;
int chr;
if((fp_in = fopen("file_name.txt","r")) == NULL){
printf("File not opened\n");
exit(1);
}
while((chr = fgetc(fp_in) != EOF){
if(chr == '#'){
while((chr = fgetc(fp_in)) != '#' || (chr != EOF)); /*skip*/
}
//do the processing.
}