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

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

2012-04-02 
C语言如何将输入数据以TXT格式保存到磁盘中例如学生成绩管理程序:#include stdio.h#include stdlib.h#

C语言如何将输入数据以TXT格式保存到磁盘中
例如学生成绩管理程序:

#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的文档文件,但是打开后是乱码。

[解决办法]
你是以二进制方式打开的文件,用fwrite写入文件,文件里是二进制数据。
如果要生成文本文件,要用fopen("stu.txt", "w")打开文件,用fprintf写入文件。
[解决办法]
用sprintf把结构format成字符串,然后再写
fputs
[解决办法]
把FILE *fp;以参数的形式传到save()函数中去,你在save()函数中定义一个局部的FILE* fp;我感觉是不可以的,就不是你在主函数中打开的文件指针了。
建议以参数的形式传到save()函数中,然后保存。

热点排行