为什么第一个程序读文件的结果是错误的,但是第二个程序读出来却是正确的
这个是文件file1
#include<stdio.h>
#include <string.h>
struct SZ{
int N;
int f;
float k;
float b;
float c;
float d;
float e;
}sz[5];
int main(){
FILE *fp=fopen("file1.txt","r+");
if(fp!=NULL){
printf("文件打开成功\n");
}
for(int i=1;i<=5;i++){
fscanf(fp,"%d",&sz[i-1].N);
printf("%d",sz[i-1].N);
fscanf(fp,"%f",&sz[i-1].k);
printf("%d",sz[i-1].k);
fscanf(fp,"%f",&sz[i-1].b);
fscanf(fp,"%f",&sz[i-1].c);
fscanf(fp,"%f",&sz[i-1].d);
fscanf(fp,"%f",&sz[i-1].e);
}
fclose(fp);
return 0;
}
运行结果
#include<stdio.h>
#include <string.h>
struct a{
float e;
int b;
int c;
}s[3];
int main(){
FILE *fp=fopen("file1.txt","r+");
if(fp!=NULL){
printf("文件打开成功\n");
}
for(int i=1;i<4;i++){
fscanf(fp,"%f",&s[i-1].e);
fscanf(fp,"%d",&s[i-1].b);
printf("%f\n",s[i-1].e);
printf("%d\n",s[i-1].b);
}
fclose(fp);
return 0;
}
运行结果
修改如下,供参考:
#include<stdio.h>
#include <string.h>
struct SZ {
int N;
int f;
float k;
float b;
float c;
float d;
float e;
}sz[5];
int main() {
FILE* fp = fopen("file1.txt", "r+");
if (fp != NULL) {
printf("文件打开成功\n");
for (int i = 1; i <= 5; i++) {
fscanf(fp, "%d", &sz[i - 1].N);
printf("%d\n", sz[i - 1].N);
fscanf(fp, "%f", &sz[i - 1].k);
printf("%f\n", sz[i - 1].k); //printf("%d", sz[i - 1].k); 修改
fscanf(fp, "%f", &sz[i - 1].b);
printf("%f\n", sz[i - 1].b); // 修改
fscanf(fp, "%f", &sz[i - 1].c);
printf("%f\n", sz[i - 1].c); // 修改
fscanf(fp, "%f", &sz[i - 1].d);
printf("%f\n", sz[i - 1].d); // 修改
fscanf(fp, "%f", &sz[i - 1].e);
printf("%f\n", sz[i - 1].e); // 修改
}
fclose(fp);
} // 修改
return 0;
}