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()函数中,然后保存。