问题遇到的现象和发生背景
在练习文件操作时,遇到一个问题,就是读取文件并输出时有乱码。
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
typedef struct stu
{
char id[10];
char name[20];
}stu;
void output(char *filename);
int main()
{
int n,i;
stu *s;
char path[1024],name[20],id[10];
scanf("%d",&n);
getcwd(path,1024);
strcat(path,"\\data.bin");
s=(stu*)malloc(sizeof(stu)*n);
for(i=0;i<n;i++)
{
scanf("%s %s",&id,&name);
strcpy(s[i].id,id);
strcpy(s[i].name,name);
}
FILE *fp1=fopen(path,"wb");
fwrite(s,sizeof(stu),n,fp1);
fclose(fp1);
output(path);
return 0;
}
void output(char*filename)
{
int n,j;
FILE* fp=fopen(filename,"rb");
fseek(fp,0,SEEK_END);
n=ftell(fp);
n=n/sizeof(stu);
rewind(fp);
stu *a;
a=(stu*)malloc(sizeof(stu)*n);
fread(a,sizeof(stu),n,fp);
printf("%s %s\n",a[0].id,a[0].name);
for( j=0;j<n;j++);
{
printf("%s %s\n",a[j].id,a[j].name);
}
fclose(fp);
}
运行结果及报错内容
调试以后发现是最后的for循环,j会直接等于1
我的解答思路和尝试过的方法
我想要达到的结果
希望可以帮我解答,感谢