zoukankan      html  css  js  c++  java
  • fputs与fgets

    1.      fputs

    函数名fputs 
      : 送一个字符到一个流中 
      : int fputs(char *string, FILE *stream); 

     

    说明:

    fputs是一种函数,具有的功能是向指定的文件写入一个字符串(不自己主动写入字符串结束标记符‘’)。成功写入一个字符串后,文件的位置指针会自己主动后移。函数返回值为非负整数;否则返回EOF(符号常量,其值为-1)

    缓冲区string中保存的是以'/0'结尾的字符串。fputs将该字符串写入文件stream,但并不写入结尾的'/0'。与fgets不同的是。fputs并不关心的字符串中的'/n'字符,字符串中能够有'/n'也能够没有'/n'
    程序例

    #include <stdio.h> 


    int main(void) 

       /* write a string to standardoutput */ 
       fputs("Hello world ", stdout); 

       return 0; 

     

    也能够输出到一个文件流

    2.      fgets

    函数名fgets 
      : fgets从指定的文件里读一行字符到调用者提供的缓冲区中

      : char *fgets(char *string, int size,FILE *stream); 

     

    说明:

    如今说说fgets函数,參数string是缓冲区的首地址。size是缓冲区的长度,该函数从stream所指的文件里读取以'/n'结尾的一行(包含'/n'在内)存到缓冲区string中。而且在该行末尾加入一个'/0'组成完整的字符串。

    假设文件里的一行太长,fgets从文件里读了size-1个字符还没有读到'/n'。就把已经读到的size-1个字符和一个'/0'字符存入缓冲区。文件里剩下的半行能够在下次调用fgets时继续读。

    假设一次fgets调用在读入若干个字符后到达文件末尾,则将已读到的字符串加上'/0'存入缓冲区并返回,假设再次调用fgets则返回NULL,能够据此推断是否读到文件末尾。

    注意:

    对于fgets来说,'/n'是一个特别的字符,而'/0'并无不论什么特别之处,假设读到'/0'就当作普通字符读入。假设文件里存在'/0'字符(或者说0x00字节)。调用fgets之后就无法推断缓冲区中的'/0'到底是从文件读上来的字符还是由fgets自己主动加入的结束符。所以fgets仅仅适合读文本文件而不适合读二进制文件。而且文本文件里的全部字符都应该是可见字符。不能有'/0'
    程序例

    #include <string.h> 

    #include <stdio.h> 

    int main(void) 

       FILE *stream; 
       char string[] = "This is atest"; 
       char msg[20]; 

       /* open a file for update */ 
       stream =fopen("DUMMY.FIL", "w+"); 

       /* write a string into the file*/ 
       fwrite(string, strlen(string), 1,stream); 

       /* seek to the start of the file*/ 
       fseek(stream, 0, SEEK_SET); 

       /* read a string from the file */ 
       fgets(msg, strlen(string)+1, stream); 

       /* display the string */ 

       printf("%s", msg); 

       fclose(stream); 
       return 0; 

  • 相关阅读:
    教你不编程快速解析 JSON 数据
    教你在 Linux 下时光穿梭
    在Linux系统中使用Vim读写远程文件
    【高并发】如何实现亿级流量下的分布式限流?这些理论你必须掌握!!
    【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!
    【高并发】关于线程池,蚂蚁金服面试官问了我这些内容!!
    【高并发】关于乐观锁和悲观锁,蚂蚁金服面试官问了我这几个问题!!
    机器学习 | 简介推荐场景中的协同过滤算法,以及SVD的使用
    Python | Python初学者的自我修养,找到自己的方向
    LeetCode 86 | 链表基础,一次遍历处理链表中所有符合条件的元素
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7237468.html
Copyright © 2011-2022 走看看