【问题描述】
请你编写一个程序完成将三位学生信息写入二进制文件class.dat的功能,学生信息由键盘读入,存储在一个结构体数组中。
该结构体数组的定义如下:
typedef struct studentMessage
{
char name[20];
char address[30];
char phone[12];
}stuMsg;
stuMsg students[3];
最终需要以fwrite函数将保存了学生信息的结构体数组写入到二进制文件class.dat中。
【输入形式】
一共三行,每行依次由学生姓名,学生地址,学生电话号码组成,以空格隔开。
【输出形式】
输出该结构体到二进制文件class.dat中
【样例输入】
kate Tokyo 13777738738
Lucy Paris 13982837827
Andy London 18273829304
这个改怎么写啊,不知道是哪里错了: #include <stdio.h> #include <stdlib.h> typedef struct studentMessage { char name[20]; char address[30]; char phone[12]; }stuMsg; stuMsg students[3]; int main(void) { FILE *fp; int i; for(i=0;i<3;i++) scanf("%s%s%d",&students[i].name,&students[i].address,&students[i].phone); fp=fopen("stuMsg.txt","w+"); if(!fp) { printf("errror!\n"); exit(-1); } for(i=0;i<3;i++) fwrite(&stuMsg,sizeof(stuMsg),3,fp); rewind(fp); fclose(fp); return 0; }
#include <stdio.h>
#include <stdlib.h>
typedef struct studentMessage
{
char name[20];
char address[30];
char phone[12];
} stuMsg;
stuMsg students[3];
int main(void)
{
FILE *fp;
int i;
for(i = 0; i < 3; i++)
//scanf("%s%s%d", &students[i].name, &students[i].address, &students[i].phone);
scanf("%s%s%s", students[i].name, students[i].address, students[i].phone);
//fp = fopen("stuMsg.txt", "w+"); 二进制要用b
fp = fopen("stuMsg.txt", "wb+");
if(!fp)
{
printf("errror!\n");
exit(-1);
}
/*
for(i = 0; i < 3; i++)
fwrite(&stuMsg, sizeof(stuMsg), 3, fp);
*/
fwrite(students, sizeof(stuMsg), 3, fp);
//rewind(fp);
fclose(fp);
return 0;
}