求c语言大神指教,为什么这个成语再执行窗口一切正常,打开对应文件却是乱码?

//【例8-9】使用数据块读写函数实现将商品信息输入到指定的二进制文件,并从该文件输出商品信息并显示。#include<stdio.h>#include<stdlib.h... //【例8-9】使用数据块读写函数实现将商品信息输入到指定的二进制文件,并从该文件输出商品信息并显示。
#include <stdio.h>
#include <stdlib.h>
struct rec /* 定义商品信息的结构体类型 */
{
char id[10];
char name[20];
float price;
int count;
};
/*将键盘输入的商品信息写到文件*/
void writefile(FILE *fp, int n)
{
int i;
struct rec record;
printf("***********请输入商品数据***********\n");
for (i = 0; i < n; i++) /*从键盘输入商品信息*/
{
printf("请输入序号:");
scanf("%s", record.id);
printf("请输入名称:");
scanf("%s", record.name);
printf("请输入价格:");
scanf("%f", &record.price);
printf("请输入数量:");
scanf("%d", &record.count);
fwrite(&record, sizeof(record), 1, fp); /* 成块写入文件*/
}
}
/*从文件读出商品信息*/
void readfile(FILE *fp, int n)
{
struct rec record;

rewind(fp); /*把文件内部的位置指针移到文件首*/

while (fread(&record, sizeof(record), 1, fp)) /* 从文件成块读*/
{
printf("序号:%s 名称:%s 价格:%5.2f 数量:%d\n",record.id,
record.name,record.price,record.count); /* 显示到屏幕*/
}
}
int main(int argc, char *argv[])
{
char filename[20];
int n;
FILE *fp;
int a;
printf("%d", a);
printf("请输入目标文件:\n");
scanf("%s", filename);

printf("请输入商品数量:\n");
scanf("%d", &n); /*从键盘输入*/

fp = fopen(filename, "ab+"); /*以读写方式打开二进制文件*/
if (fp == NULL )
{
printf("打开文件失败");
exit(1);
}

writefile(fp, n);
readfile(fp, n);

fclose(fp); /*关闭文件*/

system("pause");
return 0;
}
展开
 我来答
OverSeven
2013-01-27
知道答主
回答量:32
采纳率:0%
帮助的人:14.7万
展开全部
fp = fopen(filename, "ab+"); /*以读写方式打开二进制文件*/ 你自己的说了是以二进制输入文件

你为嘛还想还能打开看到正常数据。

你写一个测试程序, 从文件读出来数据。输入到屏幕,看看是否数据正常就好了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式