c fwrite(C中的fwrite函数)
本文目录
C中的fwrite函数
fwrite是C语言函数,指向文件写入一个数据块。 用法: size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 注意:这个函数以二进制形式对文件进行操作,不局限于文本文件 返回值:返回实际写入的数据块数目 (1)buffer:是一个指针,对fwrite来说,是要获取数据的地址; (2)size:要写入内容的单字节数; (3)count:要进行写入size字节的数据项的个数; (4)stream:目标文件指针; (5)返回实际写入的数据项个数count。 说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。 fseek对此函数有作用,但是fwrite 函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。 程序示例: 示例一: #include 《stdio.h》 struct mystruct { int i; char cha; }; int main(void) { FILE *stream; struct mystruct s; if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$$$ */ { fprintf(stderr, "Cannot open output file.\n"); return 1; } s.i = 0; s.cha = ’A’; fwrite(&s, sizeof(s), 1, stream); /* 写的struct文件*/ fclose(stream); /*关闭文件*/ return 0; } 示例二: #include《stdio.h》 #define SIZE 1 typedef struct { char name; int num; int age; char addr; }student; student stu; void save() { FILE *fp; int i; if((fp=fopen("dat.txt","w"))==NULL) { printf("无法打开此文件!\n"); return; } for(i=0;i《SIZE;i++) if(fwrite(&stu, sizeof(student), 1, fp) != 1) printf("文件写入错误。!\n"); fclose(fp); } void main() { int i; for(i=0;i《SIZE;i++) scanf("%s%d%d%s",&stu.addr); save(); }
C语言用fwrite写入问题
#include《stdio.h》 #include《string.h》 void aaa(); struct student { char name; //姓名 int age; //年龄 int num; //学号 char addr; //地址 }stu; void main() { int i; printf("请输入4个学生姓名、年龄、学号、地址,按回车!\n"); for(i=0;i《4;i++) { scanf("%s%d%d%s",stu.addr); } aaa(); } #define MAX_BUF 1000 void aaa() { FILE *fp; int i; char outbuf; char tempbuf; memset(outbuf,0,MAX_BUF); if((fp=fopen("123.txt","w"))==NULL) { printf("无法打开文件!\n"); return; } strcpy(outbuf,"姓名 年龄 学号 地址"); for(i=0;i《4;i++) { sprintf(tempbuf,"\n%s %d %d %s",stu.addr); strcat(outbuf,tempbuf); } if(fwrite(outbuf,strlen(outbuf),1,fp)!=1) { printf("写入错误!\n"); } fclose(fp); } 你的问题在于你要输出一个文本,但是你却没有进行文本,直接把数据结构中的数据输出,这样是二进制的,不是文本的。
关于c语言fwrite函数的问题
if(fwrite(&stu,sizeof(struct student),1,fp)!=1)这一步已经不对了用的是size 应该是if(fwrite(&stu,sizeof(struct student),1,fp)!=1)
c语言fwrite写文件失败
FILE *fp;fp=fopen("绝对路径","w");if(fp==NULL){perror("fopen");}fwrite(,,,fp);如果出错,请先看报错时fopen出现的信息,是不是不存在文件或段的意思
本文相关文章:
cesium的datasource(Cesium快速上手9-Camera和Scene中的其他函数使用)
2024年9月9日 18:01
day函数是什么意思(函数DAY($A$3)*4-4 代表什么意思)
2024年9月8日 10:45
递归算法解决八皇后问题(用递归函数设计八皇后问题的回溯算法C++代码)
2024年9月8日 09:01
c语言lseek函数的用法(问一个关于lseek函数的效率问题)
2024年9月7日 14:45
python递归函数考试题(python题目:要求用递归、递推和Lambda三种方式编写power(n,x)函数)
2024年9月6日 03:40
c语言中函数abs 和 fabs有什么区别?C语言中fabs表示什么意思
2024年9月4日 08:10
matlablength函数用法(如何使用MATLAB作出如下函数ns关于x变化的函数,x的取值范围为0到10)
2024年9月1日 04:40
php截取字符串以特定的字符分割(PHP怎么用substr函数截取字符串中的某部分)
2024年9月1日 03:45
small函数相反的函数(excel中small函数有什么作用)
2024年9月1日 01:40
easyx安装教程(【C语言】如何在VC++6.0中使用TC2.0特有的函数呢)
2024年8月31日 06:40
更多文章:
有网的情况下勤学网网页总是打不开怎么办?有没有在勤学网学过的小伙伴,勤学网怎么样,值得购买会员么
2024年7月23日 12:36
传奇世界渡劫飞升怎么玩 渡劫飞升方法流程攻略?梦幻西游渡劫需要飞升和化生吗
2024年5月18日 12:58
i386 和amd64 的意思?为什么ubuntu 64位版本的叫amd64
2023年9月4日 05:40
什么手机软件可以学p图和拍照?你们是怎么学习pr或者剪辑,P图的
2024年7月1日 04:22
美少女战士新版(动画版《美少女战士》一共几部国内引进了几部)
2023年7月26日 06:00
卖萌qq表情包(有哪些比较萌、比较好看的动物表情包QQ或微信上的都可)
2024年6月13日 16:25