首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

又来有关问题了,头都快炸了

2012-03-07 
又来问题了,头都快炸了!#includestdio.h#define SIZE 4struct student_type{char name[10]int numint

又来问题了,头都快炸了!
#include<stdio.h>
#define SIZE 4
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
void save()
{FILE*fp;
int i;
if((fp=fopen("stu_list","wb"))==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);
}
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].addr);
save();
}
-----------------------------------------------------------------
#include<stdio.h>
#define SIZE 4
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
main()
{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("%-10s %4d %4d %-15s\n",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);}
fclose(fp);
}
---------------------------------------------------------------------
运行第一段程序,我输入:
zhang 1001 19 room_101
fun 1002 20 room_102
tan 1003 21 room_103
ling 1004 22 room_104

然后我运行第二段程序,想看下输出结果,结果为什么是这样的?中间的数据不对呀!
zhang 1116 1118 room_101
fun 1145 1147 room_102
tan 1174 1176 room_103
ling 1203 1205 room_104

[解决办法]
fread,fwrite造成的…
[解决办法]
编译时应该出 warning 了

printf 输出 int 类型怎么能用 &,这不成是输出地址了吗

C/C++ code
printf("%-10s %4d %4d %-15s\n", stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);
[解决办法]
printf("%-10s %4d %4d %-15s\n", stud[i].name, stud[i].num, stud[i].age,stud[i].addr);

改下吧。printf这里不会有警告的,这个一般要自己注意。
[解决办法]
这个貌似是谭老先生《C程序设计》(第三版)中的例题?
[解决办法]
C/C++ code
#include <stdio.h>#include <stdlib.h>struct student_type{    char name[10];    char number[10];    int math;    int chinese;    int english;};struct student_type stu;void save();int main(){    printf("Enter a student's information.\n");    scanf("%s%s%d%d%d",stu.name,stu.number,&stu.math,&stu.chinese,&stu.english);    printf("Name   Number   Math   Chinese  English\n");    printf("%-10s%-10s%-4d%-4d%-4d\n",stu.name,stu.number,stu.math,stu.chinese,stu.english);    save();    return 0;}void save(){    FILE *fp;    char *filename="sudent.txt";    if((fp=fopen(filename,"wb"))==NULL)    {        printf("Can not open file\n");        exit(0);    }    if(fwrite(&stu,sizeof(struct student_type),1,fp)!=1)    {        printf("write file error.\n");        exit(0);    }    fclose(fp);}
[解决办法]
LZ 按你的第一个程序输入到文件中的就不对撒
C/C++ code
#include<stdio.h>#define SIZE 4struct student_type{    char name[10];    int num;    int age;    char addr[15];}stud[SIZE];void save(){    FILE*fp;    int i;    if((fp=fopen("stu_list.txt","wb"))==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);}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].addr);    save();} 

热点排行