【发布时间】:2019-08-27 10:13:57
【问题描述】:
需要遍历 fread 语句并打印每个语句。然而 feof 在末尾打印了一个额外的行
代码有效(如获得正确的输出)只需要没有额外的行
一个 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一种 一个
一个
struct item input;
FILE *fptr;
fptr = fopen(argv[1], "rb");
if(!fptr){
FILE *fpOut = fopen(argv[1], "w");
int c;
}
if(fptr == NULL){
fprintf(stderr, "\nError opening file\n");
exit(1);
fseek(fptr, 0, SEEK_SET);
}
while(!feof(fptr)){
fread(&input.business, sizeof(float), 1, fptr);
fread(&input.jellyfish, sizeof(char), 1, fptr);
fread(&input.death, sizeof(input.death), 1, fptr);
fread(&input.love, sizeof(input.love),1,fptr);
fread(&input.ornament, sizeof(input.ornament), 1, fptr);
fread(&input.taste, sizeof(input.taste),1,fptr);
fread(&input.cloth, sizeof(input.cloth),1,fptr);
fread(&input.name, sizeof(input.name),1,fptr);
fread(&input.camera, sizeof(input.camera),1,fptr);
fread(&input.attraction, sizeof(input.attraction),1,fptr);
fread(&input.bottle, sizeof(input.bottle),1,fptr);
fread(&input.stage, sizeof(input.stage),1,fptr);
fread(&input.square, sizeof(input.square),1,fptr);
fread(&input.bushes, sizeof(input.bushes),1,fptr);
fread(&input.heat, sizeof(input.heat),1,fptr);
fread(&input.fly, sizeof(input.fly),1,fptr);
printf("%f ", input.business);
printf("%c ", input.jellyfish);
printf("%d ", input.death);
printf("%c, ", input.love);
printf("%d, ", input.ornament);
printf("%f, ", input.taste);
printf("%ld, ", input.cloth);
printf("%d, ", input.name);
printf("%d, ", input.camera);
printf("%d, ", input.attraction);
printf("%d, ", input.bottle);
printf("%u, ", input.stage);
printf("%f, ", input.square);
printf("%d, ", input.bushes);
printf("%s, ", input.heat);`
printf("%d \n", input.fly);
【问题讨论】:
-
我读到过——但是,我无法以一种可行的方式将这些方法实现到我的方法中——即使用结构
-
你应该花点时间创建一个minimal reproducible example
-
feof不知道是否可以进行下一次读取。它告诉之前的读取是否遇到了 EOF。