文件问题

Seffrui_M 2012-11-27 08:21:25
#include<stdio.h>
struct student
{
char name[20];
int number;
int score[3];
}stu[3];
void input()
{
FILE *fp;
int i;
if((fp=fopen("C:\\Users\\Seffrui_M\\Desktop\\student.txt","wb"))==NULL)
{
printf("打开文件失败");
return;
}
for(i=0;i<3;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("文件错误");
fclose(fp);
}
int main()
{
int i;
printf("请输入学生信息");
for(i=0;i<3;i++)
scanf("%s%d%d%d%d",&stu[i].name,&stu[i].number,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
input();
return 0;
}


运行后
但是文件student中确实这样的
问什么 还有二进制文件和ASCII文件有什么不一样 怎样可以在主函数里打开另一个函数的文件
比如说输入数字 打开一个文件 求模板函数啊
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WangXin1224 2012-11-27
  • 打赏
  • 举报
回复
prajna 2012-11-27
  • 打赏
  • 举报
回复
輸入時用空格隔開,scanf的格式也要加空格,如下: scanf("%s %d %d %d %d", ... 如果要存為文本文件,用"wt" 方式打開文件 即: if((fp=fopen("C:\\Users\\Seffrui_M\\Desktop\\student.txt","wt"))==NULL) 寫入的時候要將整型數字轉化文字符串,再寫入, 代碼大概如下(沒有測試,僅供參考): void input() { FILE *fp; int i; if((fp=fopen("C:\\Users\\Seffrui_M\\Desktop\\student.txt","wt"))==NULL) { printf("打开文件失败"); return; } for(i=0;i<3;i++) { char line[256]; sprintf(line, "%s, %s, %s, %s, %s\n", stu[i].name,stu[i].number, stu[i].score[0],stu[i].score[1],stu[i].score[2]); if(fwrite(line,strlen(line),1,fp)!=1) printf("文件错误"); } fclose(fp); }
prajna 2012-11-27
  • 打赏
  • 举报
回复
你這是把學生信息存到student.txt文件吧; 用"wb"寫入方式,就是二進制寫入方式,雖然你把文件命名為student.txt, 但還是二進制文件. 二進制文件用記事本打開是一些亂碼,文本文件則可以看到你熟悉的字母,漢字等. scanf("%s%d%d%d%d",&stu[i].name, 這句stu[i].name不需要再用取地址符, stu[i].name數組名已經是首地址了.
longburulin 2012-11-27
  • 打赏
  • 举报
回复
scanf("%s%d%d%d%d",&stu[i].name,&stu[i].number,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); 其他原因不说 这里就错了 应该是scanf("%s%d%d%d%d",stu[i].name,&stu[i].number,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧