提问人:xNapz 提问时间:12/14/2022 最后编辑:genpfaultxNapz 更新时间:12/14/2022 访问量:47
获取错误文件格式不正确,在 C 中读取文件
getting error file format incorrect, reading file in c
问:
如果我运行 1 个数据,则程序执行成功。但是在 2 数据格式文件中不正确。我哪里做错了?
文件 .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
答:
3赞
Craig Estey
12/14/2022
#1
格式不正确。它要求在行中出现一个尾随逗号。
改变:
"%d,%100[^,],%100[^,],%100[^,],%100[^,]\n"
到:
"%d,%100[^,],%100[^,],%100[^,],%100[^\n]\n"
笔记:
- 切勿使用 .只需检查 的返回值并确保它等于 5。参见:为什么“while( !feof(file) )”总是错的?
feof
fscanf
- 你检查但从不显示你的
ferror
errno
printf
评论
0赞
Jonathan Leffler
12/14/2022
并警惕 scanf()
格式字符串中的尾随空格。在这里,如果数据来自文件,除非有人粗心大意地提供文件名而不是 ,否则这可能不是问题,但总的来说,这是一个坏主意。/dev/tty
file.txt
评论
scanf
fgets
sscanf
students
struct
feof()
"...%100[^,]\n"
feof()
stderr
stdout