-
2022-02-28 16:01:20
fwrite() 函数用来向文件中写入块数据,它的原型为:
size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );
参数说明:
ptr 为内存区块的指针,它可以是数组、变量、结构体等。fread() 中的 ptr 用来存放读取到的数据, fwrite() 中的 ptr 用来存放要写入的数据。
size:表示每个数据块的字节数。
count:表示要读写的数据块的块数。
fp:表示文件指针。
返回值:返回成功读写的块数,也即 count。如果返回值小于 count:
对于 fwrite() 来说,肯定发生了写入错误,可以用 ferror() 函数检测。
对于 fread() 来说,可能读到了文件末尾,可能发生了错误,可以用 ferror() 或 feof() 检测。这儿根据结构体来写入文件,其实写入的是二进制数据流,而记事本编码不支持二进制,所以会导致乱码,在读取的时候用相对应的fread能准确地读出写入的内容,若不想在记事本上显示乱码数据。可以考虑使用fprintf和fscanf。
更多相关内容 -
c语言文本写入结构体乱码
2022-03-09 09:14:35今天在做c语言系统类题时,用fwrite写入文件,打开文件发现乱码,百度尝试了几种办法都没解决。今天在做系统类题时,用fwrite写入文件,打开文件发现乱码,百度了一下尝试了几种办法都没解决。
如图所示第一种:认为“fwrite是将内存中的数据不经转换直接写入文件,所以文件中保存的是二进制形式,所以看到乱码”,然后尝试用fprintf写入文件,结果还是乱码。
第二种:是改变文件编码方式,将编码方式UTF-8改为ASNI编码方式,结构还是乱码。
最终仔细观察发现,乱码几乎都是在两个数据项之间,第一个数据无论是数字还是文字都不会乱码,所以我觉得编码和读写方式应该都没问题,然后我想起会不会是定义数组时没有赋初始值,导致数组有脏数据,然后我将数组赋值0后就没乱码了。
下面一行是数组赋初始值后。
-
C语言 文件写入输出。文件载入后输出是乱码,纠结啊!
2021-03-07 18:29:21该楼层疑似违规已被系统折叠隐藏此楼查看此楼void save1() //将工具的基本信息保存至文件:"工具基本信息.file"{FILE*fp; //定义fp是一个指向FILE类型数据的指针变量...该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void save1() //将工具的基本信息保存至文件:"工具基本信息.file"
{
FILE*fp; //定义fp是一个指向FILE类型数据的指针变量
struct sheng *p; //指向结构体sheng
int c;
puts("\n是否保存? 1 、保存 2、不保存\n");
scanf("%d",&c);
while(c!=1&&c!=2) //判断输入是否正确
{
while(getchar()!='\n');
printf("\n输入错误,请重新输入:");
scanf("%d",&c);
}
if(c==1)
{
if((fp=fopen("工具基本信息.file","wb"))==NULL) //打开输出文件并使fp指向此文件
{
puts("\n无法打开此文件\n"); //如果打开时出错就输出"打不开"的信息
exit(0); //终止程序
}
for(p=head1;p!=NULL;p=p->next)
fwrite(p,sizeof(struct sheng),1,fp); //写入文件wb二进制写入方式从fp指向的文件写入一组数据
fclose(fp); //关闭文件
puts("\t\t\t信息已保存成功……\n");
}
}
struct sheng *print1()
{
FILE *fp;
struct sheng *p,*h,*p1;
if((fp=fopen("工具基本信息.file","rb"))==NULL) //以读的方式打开二进制文件
{
puts("\n无法打开此文件\n");
exit(0);
}
head1=(struct sheng*)malloc(sizeof(struct sheng));//创立头节点
p=head1;//节点链接
while(!feof(fp))//判断是否结束
{
p1=(struct sheng*)malloc(sizeof(struct sheng));//创立新节点
fread(p1,sizeof(struct sheng),1,fp);//从文件读入数据
p->next=p1;//节点相连
p=p1;//移到链表尾
}
p->next=NULL;
fclose(fp);
puts("\t\t\t信息已成功读入……\n");
return h->next;
}
-
c语言,数据能写入文件,但是从文件读取数据的时候,出现了乱码,如下代码,求解答
2021-03-07 18:29:07//写入数据代码#include#defineSIZE2typedefstructstu1//学生信息表{charname[10];intnum;intage;charaddr[15];...//写入文件函数voidma...//写入数据代码#include#define SIZE 2typedef struct stu1 /...//写入数据代码#include#defineSIZE2typedefstructstu1//学生信息表{charname[10];intnum;intage;charaddr[15];}student;studentstu[SIZE];voidsave();//写入文件函数voidma...
//写入数据代码
#include
#define SIZE 2
typedef struct stu1 //学生信息表
{
char name[10];
int num;
int age;
char addr[15];
}student;
student stu[SIZE];
void save();//写入文件函数
void main()
{
int i;
printf("请输入name,num,age,address!\n");
for(i = 0; i < SIZE; i++)
{
scanf("%s,%d,%d,%s", stu[i].name,&stu[i].num,&stu[i].age, stu[i].addr);
printf("\n");
}
save();
}
void save()
{
FILE *fp;
int i;
if(!(fp = fopen("list", "wb")))
{
printf("无法打开此文件!\n");
return;
}
for(i = 0; i < SIZE; i++)
{
fwrite(&stu[i], sizeof(student), 1, fp);
}
fclose(fp);
}
//读取数据代码
#include
#include
#define SIZE 2
typedef struct stu1//学生信息表
{
char name[10];
int num;
int age;
char addr[15];
}student;
student stu[SIZE];
int i;
void load();//读取文件函数
void main()
{
load();
for(i = 0; i < SIZE; i++)
{
printf("%s %d %d %s\n", stu[i].name, stu[i].num, stu[i].age, stu[i].addr );
}
}
void load()
{
FILE *fp;
if(!(fp = fopen("list", "rb")))
{
printf("Cannot open the file!");
return;
}
for(i = 0; i < SIZE; i++)
{
fread(&stu[i], sizeof(student), 1, fp);
}
fclose(fp);
}
结果正确后面却附带着一些乱码,是那里出了问题?
展开
-
关于c语言文件操作乱码的问题
2022-05-16 13:57:55这个是文本存放的内容 但是使用我写的函数将它全部输出时候却只显示了2个,有一个是乱码 如图: 这里是我写的将文本内容输出的代码: void xianshi(){ FILE *fp; struct all *p; p = (struct all*)malloc(sizeof ... -
C语言文件读取乱码
2021-06-16 18:58:47乱码原因:txt文件的编码有问题 操作方法:另存为改编码,将UTF-8编码改为ANSI。 -
c语言向一个txt文件写入出现烫……
2022-05-15 17:02:30如图所示 出现烫的地方本应该是学生的成绩 但是在用记事本打开不能正常出现 这是为什么? 该怎么办呢? -
C语言文件写入结构体的乱码解决方法
2021-05-19 18:09:17C语言中用 fwrite 向文件写入结构体时出现乱码的解决方法,由于fwrite是用于二进制文件的,所以打开直接写入的文件是会出现乱码,这时需要一个中间文件来存储临时数据,就是先将数据存储在一个临时文件,然后从这个... -
关于fwrite写入文件后打开查看是乱码的问题
2021-07-08 23:20:30转载:https://blog.csdn.net/sinat_16643223/article/details/105677098 这是正常的,需要注意,这种细节也是自己真正自己去写了才体会得到。 -
C语言[文件写入、读取]
2022-04-27 16:01:45一、文件写入 打开:FILE *a; a=fopen("student.txt","w");...注意:写入的文件都是二进制文件,直接打开看到的是乱码 #include <stdio.h> int main() { FILE *a; int *p; int d[]={5,4,6,99}; -
C语言中写入文件的字符数组为乱码,但整形数据却正常!!!
2021-01-14 14:21:39在TC中~#include#include#include#include#includecharstr[10];staticcharstr2[10]="1234";structstudent{intnum;char*name;longphone...在TC中~#include #include #include #include #include char str[10];... -
C语言写入数据打开txt格式文件后,txt格式文件内容是乱码的,应该在哪里进行修改。
2021-01-04 17:38:33<p>#include<stdio.h> #include<stdlib.h>...在 result.txt文件里 除了姓名 其余的数字全是一些乱码和“烫烫” 以及"屯屯" 求求大神吗 能告诉萌新小白这是为什么吗</p> -
C语言读取txt文件 文字部分乱码
2021-05-24 04:26:51帮忙看下 读取出来的文字全部乱码 数字正常define _CRT_SECURE_NO_WARNINGSincludeincludevoid readFile(char*** p, int* line){int totallines = 0;char buf[1024] = { 0 };FILE* fp = fopen("C:\\Users\\Desktop\\... -
C语言读取txt文件中的汉字乱码解决问题
2022-03-28 12:28:521.打开txt文件,选择文件,选择另存为,将编码改为ANSI(ANSI是本机默认编码,即Windows的cmd界面下的编码) 2.在程序内使用fopen("文件名","w")的方式进行创建txt文件,以此方法创建的txt文件编码默认为ANSI ... -
C语言读取文件时txt中的汉字出现乱码的解决方案
2021-06-12 21:05:57C语言课程设计要求使用文件,然后在我进行文件操作的时候发生了一点小小的意外,读写文件中的汉字显示的居然是乱码。 经过我的一番查找之后发现居然是txt编码方式的问题。 为使计算机支持更多语言,通常使用 0x80~0... -
C语言读写txt文件编译时出现乱码
2021-01-24 21:51:31文本文件默认的编码形式是utf-8 马赛克部分是中文 将编码形式改成ascii就好了。文件 -> 另存为-> -
c语言的问题,写入文件的内容变成乱码了,输出的也是乱码
2022-03-08 20:42:56问题遇到的现象和发生背景 正在学c语言,改了一下网课的代码,发现输入的和输出的全是乱码 问题相关代码,请勿粘贴截图 #include #include #include #pragma warning(disable : 4996) struct Student { char name[20... -
c操作txt文件,写入数据时,在txt中变成了乱码
2020-04-05 13:45:44do{ printf("输入--1:新建 2:插入 3:查询 4:删除 5:数据输入到文件 0:退出\n"); printf("请选择功能:"); scanf("%d",&choice); switch(choice){ case 1: p=create_f_list(p);break; case 2: insert_friends_... -
C语言读写中文时出现乱码的解决
2020-12-07 21:14:17C语言读取文件时中文乱码处理 之前一直以为读取中文时变成乱码时因为读取文件时字符串长度不足,或者是文件中中文格式不对,上网百度以后发现是TXT格式文件在创建时默认编码为UTF-8,这导致在读取文件时编码格式不... -
C语言写文件,记事本打开是乱码
2017-08-22 13:37:34程序输入之后,记事本只显示name、addr,而int型数据均为乱码,请问如何解决这一问题?? #include #define SIZE 3 struct Student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; ... -
Linux编译C语言出现乱码
2021-11-13 19:21:42作为一名初学者,当编译C语言文件指令时,文档中的汉字会以乱码的形式出现,这就导致编译的困难。 针对于我的情况,解决办法是:在主文件中打开文本,点击右上角这个三个横杠的按键。 点开工具,点击高亮(如果是... -
C语言在读取txt类型文件中的汉字字符串出现乱码的解决办法
2021-08-11 16:39:46C语言在读取txt类型文件中的汉字字符串出现乱码的解决办法 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj 一、前言 当我们在练习文件这一章节时,因为需要从文件中读取... -
fwrite写入文件乱码,使用fscanf() 和 fprintf() 函数实现
2020-05-13 23:32:58#include <stdio.h> #include <stdlib.h> int main() { long buffer[]={1000,2000,3000,4000,5000,6000,7000}; long RCV[10]; //接收数组 FILE *fp;...//统计写入的数据块 int RCV_num -
fwrite写入文件乱码问题
2018-09-05 15:07:49参考下面这篇文章(使用fprintf写入文件) http://c.biancheng.net/cpp/html/2936.html 使用fprintf 和 fscanf 代替 fwrite fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化... -
关于C语言用fscanf写入中文的时候会乱码的解决办法 亲测有效
2022-04-01 17:10:44最近写代码用fscanf遇到写入中文的时候会有乱码,是assi码的显示方式。找了好多资料都没有解决。 目前网上搜到办法有:用宽字符型。但是没有用。 最简单的办法就是用notepad++在编码模式上选择assi模式,然后输入... -
C语言文件操作
2021-05-19 09:21:25所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么... -
基于c语言的socket乱码解决
2022-07-24 11:21:02socket乱码解决:大小匹配