C语言 输出文件出现乱码

来源:百度知道 编辑:UC知道 时间:2024/06/23 18:17:32
源程序如下:(照书抄的)
#include <stdio.h>
#define SIZE 2
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save()
{
FILE *fp;
int i;
if((fp=fopen("stud_list","w"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
if(fwrite(&stud[i],sizeof(struct student_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void output()
{int i;
FILE *fp;
fp=fopen("stud_list","r");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
fclose(fp);
}
void main()
{

int i;
for(i=0;i<SIZE;i++)
scanf("%s,%d,%d,%s",stud[i].name,&stud[i].num

你说的乱码应该是结果中多出来一些你没有输入的值吧?

试试
scanf("%s",stud[i].name);
scanf("%d,%d,%s",&stud[i].num, &stud[i].age, stud[i].addr);

我觉得scanf("%s,%d...)没办法区分【,】是分隔符还是字符串的一部分,分开写应该就没问题了。

Press any key to continue是VS加进去的,是正常的。

,不能用来作字符串输入时的分隔符,它也被读进字符串里的.
应该就用scanf("%s%d%d%s",输入的时候字符串和数字之间要有空格