刚输出,就出现乱码,怎么会这样啊???
第25行 struct FP** pHead = NULL;多写了一个*号 改成:struct FP* pHead = NULL;-------不好意回复错了
主函数main()里第31行开始到第38行止,这段的文件读入和第39行调用file()函数打印文件重复了,file()函数里不再需要打开文件的操作,只要保留打印数组的相关语句就可以了。另第34行的文件读入fscanf()里面的 & 是多余的,读入的是字符串,前面不需要加 '&‘符号。第29行定义的 stu s;是多余的。
结构体定义的代码看的不是很清楚,这里修改完善了下,两个函数里的形参 struct student 这里对应你结构体名的定义,不对的话自己修改下:
void file_printf(int n,struct student *s)
{
int i;
printf(" 学生系统 \n");
for(i=0;i<n;i++)
{
printf("%s %s %s %d %s",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].other);
}
}
void file_save(int n,struct student *s)
{
FILE *fp;
int i;
fp = fopen("c:\\a6.txt","w");
if(fp == NULL){
printf("file open fail!\n");
return;
}
for(i=0;i<n;i++)
fprintf(fp,"%s %s %s %d %s",s[i].no,s[i].name,s[i].sex,s[i].age,s[i].other);
fclose(fp);
printf("文件保存成功!\n");
}
int main()
{
int j=0;
FILE *fp;
fp = fopen("c:\\a6.txt","r");
if(fp == NULL){
printf("file open fail!\n");
return 1;
}
while(fscanf(fp,"%s %s %s %d %s",stu[j].no,stu[j].name,stu[j].sex,&stu[j].age,stu[j].other)==5)j++;
fclose(fp);
n = j; //这里的 n 是全局变量?
file_printf(n,stu);//文件内容打印到屏幕
file_save(n,stu); //将数组内容保存到文件
return 0;
}