获取错误文件格式不正确,阅读文件在c

p4rjhz4m  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(92)

如果我运行1个数据,程序执行是成功。2但是2个数据格式文件不正确。3我哪里出错了?
文件.txt

1,Nanggroe Aceh Darussalam,Rumah Sakit,RSU Cut Nyak Dhien,Jl. Tm Bahrum No. 1 Langsa
2,Jawa Barat,Klinik Utama,dr. Sunarhadi,Raya Cikaret No. 12

读取代码

do{
    read = fscanf(file,
                    "%d,%100[^,],%100[^,],%100[^,],%100[^,]\n",          
                    &students[records].no, 
                    students[records].prov, 
                    students[records].tipe, 
                    students[records].nama,
                    students[records].alamat); 

    if (read == 5) records++;
    
    if (read != 5 && !feof(file)){
      printf("File format incorrect.\n");
      return 1;
    }
    
    if (ferror(file)){
      printf("Error reading file.\n");
      return 1;
    }

  } while (!feof(file));

输出显示

File format incorrect.

我怎么能输出像

No      : 1
Prov    : Nanggroe Aceh Darussalam
Tipe    : Rumah Sakit
Nama    : RSU Cut Nyak Dhien
Alamat  : Jl. Tm Bahrum No. 1 Langsa

No      : 2
Prov    : Jawa Barat
Tipe    : Klinik Utama
Nama    : dr. Sunarhadi
Alamat  : Raya Cikaret No. 12
7cwmlq89

7cwmlq891#

格式不正确。行中应有 * 尾随 * 逗号。
变更:

"%d,%100[^,],%100[^,],%100[^,],%100[^,]\n"

转入:

"%d,%100[^,],%100[^,],%100[^,],%100[^\n]\n"

注:
1.千万不要使用feof。只需检查fscanf的返回值并确保它等于5。请参见:Why is “while( !feof(file) )” always wrong?
1.您选中ferror,但从未显示printf中的errno内容

相关问题