|
1鱼币
无论老鸟新鸟,肯定很少人遇到这样的事!
我在做一个无聊的表格的时候,发现的问题!请大家仔细的看看下面我给出的两段代码,并且试下,你会发现不一样的喔!
第一段代码:
#include <stdio.h>
#define SIZE 40
struct student_type
{
char name[10];
int num;
int age;
char address[15];
}stud[SIZE];
void save()
{
int i;
FILE *fp;
if( (fp=fopen("stu_list","wb"))==NULL )
{
printf("file write error\n");
fclose(fp);
}
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 printf_stud()
{
int i;
FILE *fp;
fp=fopen("stu_list","rb");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s%d%d%s \n",stud[i].name, stud[i].num, stud[i].age, stud[i].address);
fclose(fp);
}
}
void main()
{
int i;
for(i=0;i<SIZE;i++)
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].address);
save();
printf_stud();
}
第二段代码:
#include <stdio.h>
#define SIZE 1
struct student_type
{
char name[10];
int num;
int age;
char address[15];
}stud[SIZE];
void save()
{
int i;
FILE *fp;
if( (fp=fopen("stu_list","wb"))==NULL )
{
printf("file write error\n");
fclose(fp);
}
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 printf_stud()
{
int i;
FILE *fp;
fp=fopen("stu_list","rb");
for(i=0;i<SIZE;i++)
{
fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%s%d%d%s \n",stud[i].name, stud[i].num, stud[i].age, stud[i].address);
fclose(fp);
}
}
void main()
{
int i;
for(i=0;i<SIZE;i++)
scanf("%s%d%d%s",&stud[i].name,&stud[i].num,&stud[i].age,&stud[i].address);
save();
printf_stud();
}
没错各位大部分说:这不是一模一样的代码么?仔细的朋友肯定会发现,我的第一段main函数的scanf缺少了两个&&,但是毫不影响运算结果,那肯定有其他朋友肯定说那能不能缺少其他呢?我尝试过这段代码,只能前面和后面!我很仔细的对过这两个代码的汇编代码,是基本一摸一样的!那就是说,是不是scanf这个函数就可以偷工减料去少写几个呢!请大家思考下把!
|
|