Professional Documents
Culture Documents
c语言文件读写操作
c语言文件读写操作
读文件:fgetc(按字符)、fgets(按字符串)、fread(按数据块)、fscanf(按指定格
式化);
写文件:fputc(按字符)、fputs(按字符串)、fwrite(按数据块)、fprintf(按指定
格式化);
主要涉及操作函数:fopen、fclose;
一、fopen
解释:打开一个文件。
参数:_Filename--文件路径、_Mode--文件操作模式(读,写,追加);
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返
回 NULL,并把错误代码存在 errno 中;
二、fgetc
返回值:返回所读取的一个字节,如果读到文件末尾或者读取出错时返回 EOF;
例程:
void readc()
{
FILE *pf = fopen("c:\\1.txt","r");
int i;
do
{
i = fgetc(pf);
printf("%c", i);
}while(i != EOF);
fclose(pf);
}
三、fputc
例程:
void writec()
{
FILE *fp = fopen("c:\\1.txt","a");
fputc('s',fp);
fputc('h',fp);
fputc('i',fp);
fputc('z',fp);
fputc('f',fp);
fclose(fp);
}
四、fgets
参数:Buf--字符串缓存区、_MaxCount--字符串缓存区长度、_File--文件指针;
返回值:
1、成功,则返回第一个参数 buf;
例程:
void readStr()
{
FILE *pf = fopen("c:\\str.txt","r");
char temp[10];
while(fgets(temp,sizeof(temp)/sizeof(char),pf)!=NULL)
printf("%s",temp);
fclose(pf);
}
五、fputs
解释:将字符串写入文件
参数:_Str--待写入的字符串、_File--文件指针;
返回值:成功,为非负整数;否则返回 EOF;
例程:
void writeStr()
{
FILE *pf = fopen("c:\\str.txt","w");
fputs("this is my first program of write string into file",pf);
fclose(pf);
}
六、Fread
解释:按数据块从文件中读取数据;
例程:
#define READ_ARR_COUNT 3
struct ReadStudent
{
char name[20];
int age;
char sex;
char addr[100];
}stuR[READ_ARR_COUNT];
void readStream()
{
FILE *pf = fopen("c:\\stream.txt", "r");//读出二进制文件
size_t count = fread(stuR,sizeof(struct ReadStudent),3,pf);
int i;
for (i = 0; i < READ_ARR_COUNT; i++)
{
printf("name:%s,age:%d,sex:%c,addr:%s\n",stuR[i].name,
stuR[i].age,stuR[i].sex,stuR[i].addr);
}
fclose(pf);
system("pause");
}
七、Fwrite
解释:将数据块写入到文件中;
函 数 原 型 : size_t __cdecl fwrite(_In_reads_bytes_(_Size*_Count) const void * _Str, _In_
size_t _Size, _In_ size_t _Count, _Inout_ FILE * _File);
参 数: _DstBuf-- 待写 入文 件的 数据 块集 合( 数组 等) 、 _Size-- 单 个数 据块 的大 小 、
_Count--本次写入的数据块数量、_File--文件指针;
八、总结:
对文件操作各函数的返回值始终记不住,所以作以下表格以供记忆,各位如果有好的
记忆方法,可以交流交流。
函数返回值记忆表
我们要走的路,有着太多的不确定,他人的一句劝诫,自己的一个闪念,偶尔的得与
失,都时刻在改变着我们命运的走向。世事难以预料,遇事无须太执,谁都无法带走什么
又何必纠结于某一人、某一时、某一事。只有看开了,想通了,才能随缘、随性、随心而
为,不急不躁,不悲不欢,不咸不淡。