0

これは非常に単純な問題であり、インターネットで検索して答えを見つけることができると思っていましたが、できませんでした。私がやりたいことは、ファイルを読み込むことだけですが、ハッシュで始まるコメントは無視します。そう

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 行をスキップしても問題ありませんが、スキップする必要があるハッシュ キーが続く複数行のファイルがあります。誰かがこれを手伝ってくれますか、答えが見つからないようです。乾杯

4

3 に答える 3

1

if (buf[0] == '#') continue;ループの先頭に追加します。

于 2012-10-19T12:32:09.743 に答える
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////
}

コメント行を無視します。それほど単純でない場合は、コメントの行をスキャンすることを避ける方法はありません。

于 2012-10-19T12:32:37.987 に答える
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.
}
于 2012-10-19T12:33:33.080 に答える