C语言如何将输入数据以TXT格式保存到磁盘中

L11168032 2012-03-02 10:26:05
例如学生成绩管理程序:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 5


struct student
{
char name[10];
int num;
int score[3];
float ave;
}stud[SIZE];

void main()
{
void save(void);
int i;
float sum[SIZE];
FILE * fp1;

for(i =0; i < SIZE; i++)
{
scanf("%s %d %d %d %d", stud[i].name, &stud[i].num, &stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
sum[i] = stud[i].score[0] + stud[i].score[1] + stud[i].score[2];
stud[i].ave = sum[i] / 3;
}
save();

fp1 = fopen("stu.txt", "rb");
printf("-----------------------------------------------------------\n");

for (i = 0; i < SIZE; i++)
{
fread(&stud[i], sizeof(struct student), 1, fp1);
printf("%-10s %3d %7d %7d %7d %8.2f\n", stud[i].name, stud[i].num, stud[i].score[0], stud[i].score[1], stud[i].score[2], stud[i].ave);
}

fclose(fp1);
}

void save(void)
{
FILE *fp;
int i;

if ((fp = fopen("stu.txt", "wb")) == NULL)
{
printf("error\n");
return;
}

for(i = 0; i < SIZE; i++)
{
if(fwrite(&stud[i], sizeof(struct student), 1, fp) != 1)
{
printf("error\n");
}
}
fclose(fp);
}



运行后在项目中能找到一个名为stu的文档文件,但是打开后是乱码。
...全文
1556 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-03-02
  • 打赏
  • 举报
回复
把FILE *fp;以参数的形式传到save()函数中去,你在save()函数中定义一个局部的FILE* fp;我感觉是不可以的,就不是你在主函数中打开的文件指针了。
建议以参数的形式传到save()函数中,然后保存。
ouyh12345 2012-03-02
  • 打赏
  • 举报
回复
用sprintf把结构format成字符串,然后再写
fputs
xiaohan0058 2012-03-02
  • 打赏
  • 举报
回复
你是以二进制方式打开的文件,用fwrite写入文件,文件里是二进制数据。
如果要生成文本文件,要用fopen("stu.txt", "w")打开文件,用fprintf写入文件。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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