linux文件操作之标准IO函数

文件操作之标准IO

fopen打开文件

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

参数:const char *pathname 表示文件的路径(以字符串的形式表示)

      const char *mode   表示打开文件的方式

      打开方式解释:常用的r  --->表示只读O_RDONLY

                     w  --->表示只写O_WRONLY

  w+ --->表示可读可写-可创建-可覆盖

  r+ --->表示可读可写

  a+ --->表示可读可写-可创建-可追加

O_WRONLY|O_CREAT|O_TRUNC  --->表示只写、可创建、可覆盖

O_WRONLY|O_CREAT|APPEND   --->表示只写、可创建、可追加

O_RDWR|O_CREAT|O_TRUNC    --->表示读写,可创建,可覆盖

返回值:成功,返回文件的指针  FILE *类型的

        失败返回NULL

功能:打开文件,有可能创建文件

FILE *fp;

fp=fopen("./1.txt","w+");

if(fp == NULL)

{

printf("fopen error \r\n");

return -1;

}

fclose关闭文件

原型:int fclose(FILE *stream)       FILE *fp 对应文件的描述符

参数:FILE *stream --->表示文件流指针(一般对应的fopen()函数的返回值

返回值:成功 返回0

        失败 返回-1

功能:关闭一个文件流

b=fclose(fp);

if(b == 0)

{

printf("exit success\r\n");

}

fwrite写文件

原型: size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream)

参数:    const void *ptr   --->缓存空间的地址   -->存放数据的地方

          size_t size       --->表示每块数据的长度(一般情况下长度为1

 size_t nmemb      --->表示数据块的个数

 FILE *stream      --->表示文件流指针   -->利用fopen获取对应的文件流fp

返回值:返回实际写到的数据个数

功能:从ptr执行的缓存空间读取nmemb块的数据,每块数据的长度按照size(nmemb * size单位字节)

//利用fwrite函数,往对应的文件里面写入数据

a=fwrite(buf,1,sizeof(buf),fp);

printf("a = %d\r\n",a);

fread读文件

原型:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);

参数: void *ptr   --->缓存空间的地址  --->获取数据之后,把对应的数据放到相应的位置

       size_t size  --->表示每块数据的长度(一般情况下长度为1)

  size_t nmemb    --->表示数据块的个数

       FILE *stream      --->表示文件流指针

返回值:返回实际读取到的数据长度

功能:从stream对应的文件中读取nmemb块数据,每块数据的大小为size,最后将读取的数据写入到ptr指向的缓存空间

功能:从键盘上获取数据--文件流指针 stdin

char buf[64];

fread(buf,1,sizeof(buf),fp);   //补充:可以利用stdin或者stdout进行标准输入和输出

fseek调整文件读写位置

原型:int fseek(FILE *stream , long offset, int whence);

参数: FILE *stream ----->表示文件流指针

       long offset  ----->表示相对的偏移量

 int whence   ----->表示偏移基点--注意可以填写的SEEK_SET|SEEK_CUR|SEEK_END

返回值:成功 返回0

        失败 返回-1

功能:重新调整文件的读写位置

用fseek()函数实现计算文件的大小

fseek(fp,0,SEEK_END);

f_size = ftell(fp);

printf("%s 文件的大小是%d\r\n",filename,f_size);

fscanf从文件获取数据到缓存空间

原型: int fscanf(FILE *stream,const char *format,...);

参数: FILE *stream    --->文件流指针

       const char *format  --->输入格式 --对应字符串 

返回值:成功 返回有效的输入字符的个数

       失败 返回-1

功能:从文件中获取数据写入到对应的缓存空间中

注意:通过fscanf()函数获取字符串的时候,空格将被视为分割符号abcdef

fscanf(fp,"%s",str);

fprintf缓存空间数据写到文件里

原型:int fprintf(FILE *stream,const char *format,...);

参数:FILE *stream             --->文件流指针 

      const char *format  ---> 类比printf()

返回值:成功,返回输出的字符个数。

        失败,  返回负数

功能:可以将缓存空间的内容写入到文件中。

fprintf(fp,"good morming");   --->类比:printf(good morming)

fgetc从文件获取一个字符

原型: int fgetc(FILE *stream)  

参数: FILE *stream    --->文件流指针

返回值:成功的话,返回读取到的字符。

        失败的话,返回EOF

功能:从文件中获取一个字符

ch=fgetc(fp);

printf("ch = %c\r\n",ch);

fputc字符写入文件中

原型: int fputc(int c,FILE *stream);

参数: int c           ---->表示待写入字符

       FILE *stream    --->文件流指针

返回值:表示成功写入字符的个数

功能:将指定的字符写入到文件流中。

//利用fputc函数

a=fputc(ch , fp);

if(a != 0)

{

printf("fputc success\r\n");

printf("a = %d\r\n",a);

}

fgets从文件获取数据到内存空间

原型:  char *fgets( char *str, int num, FILE *stream );

参数:     char *str ;     //要获得数据的对象。

           int num;      //表示最多获取到的字符个数

           FILE *stream    --->文件流指针

功能:fgets()从stream所指向的文件内部读取字符并存到str指向内存空间中

fgets(buf,sizeof(buf),stdin);   //利用stdin从键盘里面获取信息,存储到buf

fputs字符串写入文件

原型:  int fputs(const char *s,FILE *stream);

参数    const char *s  ---->表示要传入数据的地址

返回值:如果成功的话返回写入字符的个数

        失败的话 EOF

功能:将参数s指向的字符串,写入到文件中

fputs(buf,stdout);            //利用stdout将对应的信息输出到屏幕

feof读写位置是否到达文件末尾

原型:int feof(FILE *stream);

返回值:如果读写位置达到文件的末尾,则返回非0--->读到文件的末尾了,返回是一个非0值

        如果读写位置没有达到文件的末尾,则会返回0

while(feof(fp) == 0)  //判断读取文件内容没有达到文件的末尾

{

rd_len = fread(buf,1,sizeof(buf),fp);

fwrite(buf,1,rd_len,stdout);

}

fflush把缓存区数据写回文件中

原型: int fflush(FILE *stream);

参数: FILE *stream    --->文件流指针

返回值:成功 返回0

        失败的话返回NULL

功能:fflush()函数将缓存区的数据写回到stream文件中

fflush(stdout);   //将缓冲区的内容在终端上进行输出

小广告:

好好学习,天天向上

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值