fwrite写入乱码(c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序)

:暂无数据 2026-07-07 07:20:01 :0

fwrite写入乱码(c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序)

大家好,fwrite写入乱码相信很多的网友都不是很明白,包括c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序也是一样,不过没有关系,接下来就来为大家分享关于fwrite写入乱码和c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序

这个函数以二进制形式对文件进行操作
按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为
乱码。例如float
a=12345.67,写入文件后为4个字节,打开后不是文本表示的8个字节。

C 语言,文件操作将结构体数组用fwrite写入文件后,打开时为什么文件中会是一堆乱码

注意你的写入语句:

 fwrite(&s[i],sizeof(stu),1,fp);

你这样是以二进制的形式将stu结构写入文件的。

typedef struct
{
char name;
int score[M];
double avg;
}stu;

应该用fprintf函数分三次完成一个记录的输出:

fprintf(fp,“%s\t“, s[i].name);
int j; //在前面补充定义
for(j=0;j 《 M;j++) fprintf(fp,“%d\t“, s[i].score[j]);
fprintf(fp,“%f\n“, s[i].avg);

 对应的fread也要修改。我改好了传上来。


#include《stdio.h》
#include《string.h》
#include《stdlib.h》
#define N 20
#define M 3
typedef struct
{
char name;
int score[M];
double avg;
}stu;
void swap(stu*m,stu*n)
{
stu t=*m;
*m=*n;
*n=t;
}
void input(stu*s,int n)
{
int i,j;
double sum=0;
for(i=0;i《n;i++)
{
printf(“请输入姓名:“);
scanf(“%s“,s[i].name);
printf(“请输入分数(英语数C):“);
for(j=0;j《M;j++)
scanf(“%d“,&s[i].score[j]);
printf(“\n“);
}
}
void sort(stu*s,int n)
{
int i,j;
double sum=0;
for(i=0;i《n;i++)
{
for(j=0;j《M;j++)
sum+=s[i].score[j];
s[i].avg=sum/M;
sum=0;
}
for(i=1;i《n;i++)
for(j=0;j《n-i;j++)
{
if(s[j].avg《s[j+1].avg)
swap(&s[j],&s[j+1]);
else if((s[j].avg==s[j+1].avg)&&(strcmp(s[j].name,s[j+1].name)《0))
swap(&s[j],&s[j+1]);
}
}
void save(stu*s,int n)
{
FILE*fp;
int i, j;
fp=fopen(“d:\\data.dat“,“w“);
for(i=0;i《n;i++)
{
//fwrite(&s[i],sizeof(stu),1,fp);
fprintf(fp,“%s\t“, s[i].name);
for(j=0;j 《 M;j++) fprintf(fp,“%d\t“, s[i].score[j]);
fprintf(fp,“%f\n“, s[i].avg);
}
fclose(fp);
}
void output(stu*s,int n)
{
int i=0,j;
FILE*fp;
if((fp=fopen(“d:\\data.dat“,“r“))==NULL)
{
printf(“fail\n“);
exit(0);
}
while(!feof(fp))
{
//fread(&s[i],sizeof(stu),1,fp);
fscanf(fp, “%s“,s[i].name);
for(j=0;j《M; j++) fscanf(fp,“%d“, &s[i].score[j]);
fscanf(fp, “%f“,&s[i].avg);
i++;
}
fclose(fp);
for(i=0;i《n;i++)
{
printf(“%s\t“,s[i].name);
for(j=0;j《M;j++)
printf(“%d   “,s[i].score[j]);
printf(“%.1lf“,s[i].avg);
printf(“\n“);
}
}
void main()
{
int n;
stu s[N];
printf(“input n:“);
scanf(“%d“,&n);
input(s,n);
sort(s,n);
save(s,n);
output(s,n);
}

fwrite保存数据,文本打开变乱码

因为写入文件的是二进制数据,所以看上去就是乱码。
#include《stdio.h》
#include《stdlib.h》
#include《time.h》
#define N 10000
int main()
{
int a[N];int i,j,m;
FILE*fw,*fr;
srand((unsigned)time(NULL));
for(i=0;i《1000;i++)
{
a[i]=rand()%1000+1;
} //产生随机数组
fw=fopen(“f:\\intfile.dat“,“wb“);//以二进制方式打开,因为你后面是用二进制方式读的,否则会乱码
if(fw==NULL)
{
printf(“ERROR!“);
exit(0);
}
for(i=0;i《1000;i++)
{
fprintf(fw,“%8d“,a[i]);
} //将随机数组导入文件中
fclose(fw);
fr=fopen(“f:\\intfile.dat“,“rb“);//同理,看上面
while(!feof(fr))
{
fscanf(fr,“%8d“,&j);
printf(“%8d“,j);
}
fclose(fr);
fw=fopen(“f:\\intfile.dat“,“a+b“);//b是binary的意思,要统一
if(fw==NULL)
{
printf(“ERROR!!!“);
exit(0);
}
fwrite(a,sizeof(int),1000,fw);
fclose(fw);
fr=fopen(“f:\\intfile.dat“,“rb“);
fseek(fr,32L,SEEK_SET);
fscanf(fr,“%8d“,&j);
printf(“%8d“,j);
fseek(fr,72L,SEEK_SET);
fscanf(fr,“%8d“,&j);
printf(“%8d“,j);
fseek(fr,-40L,SEEK_END);
fscanf(fr,“%8d“,&j);
printf(“%8d“,j);
fseek(fr,-80L,SEEK_END);
fscanf(fr,“%8d“,&j);
printf(“%8d“,j);
fclose(fr);
return 0;
}

为什么结构体里面的int型变量用fwrite写入文件时显示乱码

乱码才是对的。
你用的是二进制形式打开的文件,int类型占用4字节,你的代码就是把这4字节写入了文件。
相当于就是说你的int比如是0x12345678,写入文件的内容会是 78 56 34 12 (注意,我说的是十六进制码),它不是可读的字符串。你需要的是将int转换为字符串再写入。

关于本次fwrite写入乱码和c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

fwrite写入乱码(c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序)

本文编辑:admin

更多文章:


python语言程序设计是什么(python语言是什么)

python语言程序设计是什么(python语言是什么)

各位老铁们好,相信很多人对python语言程序设计是什么都不是特别的了解,因此呢,今天就来为大家分享下关于python语言程序设计是什么以及python语言是什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 12:00

windows程序设计第五版(《WINDOWS程序设计》和《WINDOWS核心编程》的区别)

windows程序设计第五版(《WINDOWS程序设计》和《WINDOWS核心编程》的区别)

本篇文章给大家谈谈windows程序设计第五版,以及《WINDOWS程序设计》和《WINDOWS核心编程》的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了

2026年10月15日 11:30

issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)

issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)

各位老铁们,大家好,今天由我来为大家分享issued retroactively,以及FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站

2026年10月15日 10:30

f发音是什么?printf的返回值是什么

f发音是什么?printf的返回值是什么

大家好,关于f很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于f发音是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 10:10

begin和start的区别(start与begin的区别)

begin和start的区别(start与begin的区别)

其实begin和start的区别的问题并不复杂,但是又很多的朋友都不太了解start与begin的区别,因此呢,今天小编就来为大家分享begin和start的区别的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 09:20

vant官网中文(范特365 是韩国化妆品VANT36.5吗)

vant官网中文(范特365 是韩国化妆品VANT36.5吗)

大家好,今天小编来为大家解答以下的问题,关于vant官网中文,范特365 是韩国化妆品VANT36.5吗这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 09:10

特殊字符是指什么?正则表达式中一些特殊字符的用法

特殊字符是指什么?正则表达式中一些特殊字符的用法

大家好,特殊字符相信很多的网友都不是很明白,包括特殊字符是指什么也是一样,不过没有关系,接下来就来为大家分享关于特殊字符和特殊字符是指什么的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

2026年10月15日 08:10

特殊符号网名大全花样符号(特殊符号昵称有哪些)

特殊符号网名大全花样符号(特殊符号昵称有哪些)

本篇文章给大家谈谈特殊符号网名大全花样符号,以及特殊符号昵称有哪些对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月15日 07:30

prison break(越狱(prison break)到底是在讲个什么)

prison break(越狱(prison break)到底是在讲个什么)

各位老铁们好,相信很多人对prison break都不是特别的了解,因此呢,今天就来为大家分享下关于prison break以及越狱(prison break)到底是在讲个什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2026年10月15日 06:50

c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)

c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)

各位老铁们,大家好,今天由我来为大家分享c程序设计第五版教学视频,以及求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动

2026年10月15日 06:40

最近更新

热门文章

标签列表