问题描述
- C语言【文件操作】的问题
-
各位学长,小生刚接触C语言不久,特别是文件操作,希望解答以下问题,不胜感谢:
1.fwrite函数的第三个参数的意思,百科的解释有点看不懂。。。
2.下面有一段小程序,为什么输入成绩时到第二个就没有了?
而且读取文件输出时,有的数据会变成一串数字。。。
#include "stdafx.h"
#include
#includestruct stu
{
int numb;
char name[10];
int score;
}studenta[3],studentb[3];int main(int argc, char* argv[])
{
int m;
int a;
FILE *fp=fopen("file.txt","ab");
if(fp==NULL)
{
printf("Erroe!Can not open the file!");
exit(0);
}
else
printf("请选择您需要的服务:n1.录入学生成绩,P键结束录入n2.查询学生成绩n");
scanf("%d",&a);
switch(a)
{
case 1:printf("请按“学号 姓名 成绩”输入:n");
for(m=0;m<3;m++)
{
scanf("%d%c%d",&studenta[m].numb,&studenta[m].name,&studenta[m].score);
if(getchar()=='p')break;
}
fwrite(&studenta,sizeof(struct stu),1,fp);
break;
case 2:fread(&studentb,sizeof(struct stu),1,fp);
for(m=0;m<3;m++)
{
printf("%d %c %d",studentb[m].numb,studentb[m].name,studentb[m].score);
};break;
default:printf("Error!EXE will be close!");exit(0);
}
fclose(fp);
return 0;
}
解决方案
写入的元素的个数,这个元素的类型不确定。
解决方案二:
1表示写入一个结构体。
解决方案三:
http://www.cnblogs.com/witxjp/archive/2011/03/21/1990519.html
解决方案四:
要进行写入size字节的数据项的个数
解决方案五:
for(m=0;m<3;m++)
{
scanf("%d%c%d",&studenta[m].numb,&studenta[m].name,&studenta[m].score);
if(getchar()=='p')break;
else fflush(stdin);//你加上这个清除输入缓冲区就好了。你需要多了解这个方面常见的问题,我以前学习时老师就强调过。
}