龙空技术网

「C与指针心得」26. I/O输入/输出——fopen\fclose\fread\fwrite

IngresGe 292

前言:

目前各位老铁们对“c语言fwrite无法写入”大致比较关切,我们都想要分析一些“c语言fwrite无法写入”的相关内容。那么小编同时在网络上网罗了一些有关“c语言fwrite无法写入””的相关内容,希望你们能喜欢,咱们快快来了解一下吧!

感谢您的阅读与点赞!欢迎关注:「大猫玩程序」,查看C语言系列文章

本节主要讨论ANSI C的输入和输出(I/O)函数。

打开流:fopen:

原型:FILE fopen(const char path,const char * mode);

返回值:成功,返回文件指针,失败返回NULL,错误码保存在errno中 .

示例:

FILE *fp;fp = fopen(“/home/tianger/test”,”r”);if(NULL == fp){ perror(“/home/tianger/test”);}

关闭流:fclose:

原型:int fclose( FILE *fp );

返回值:成功,返回0;失败,返回EOF(-1)

示例:

关闭fopen打开的fp

fclose(fp);fp = NULL;

读缓冲区:fread:

作用:fread从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0

原型:size_t fread ( void buffer, size_t size, size_t count, FILE stream) ;

参数:

buffer 用于接收数据的内存地址

size 要读的每个数据项的字节数,单位是字节

count 要读count个数据项,每个数据项size个字节.

stream 输入流

返回值:实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。

示例:

#include<stdio.h>#include<string.h>int main(void){ FILE*stream; char msg[]="this is a test"; char buf[20]; if((stream=fopen("big_cat.txt","w+"))==NULL) { fprintf(stderr,"Can not open output file.\n"); return 0; } /*write some data to the file*/ fwrite(msg,strlen(msg)+1,1,stream); /*sizeof(char)=1 seek to the beginning of the file*/ fseek(stream,0,SEEK_SET); /*read the data and display it*/ fread(buf,strlen(msg)+1,1,stream); printf("%s\n",buf); fclose(stream); return 0;}

输出:

产生一个big_cat.txt文件,并打印 this is a test.

写缓冲区: fwrite:

说明:fwrite 指向文件写入一个数据块.fwrite只是把程序先写到缓冲区,真正写入到文件,由操作系统决定,如果此时你想快速把缓冲区内容写入到文件,可以调用fflush()来实现。

原型:size_t fwrite(const void buffer, size_t size, size_t count, FILE stream);

返回值:返回实际写入的数据块数目

示例:

#include <stdio.h>int main (){ FILE * pFile; char buffer[] = { 'x' , 'y' , 'z' }; pFile = fopen ( "big_cat.txt" , "wb" ); fwrite (buffer , sizeof(buffer), 1 , pFile ); fclose (pFile); return 0;}

输出:

往文件big_cat.txt中写入xyz

标签: #c语言fwrite无法写入 #c语言fwrite函数的功能