标准I/O库

        标准I/O库及其头文件stdio.h为底层I/O系统调用提供了一个通用的接口。标准I/O库中,与底层文件描述符对应的是流,它被实现为指向结构FILE的指针。

       在启动程序时,有3个文件流是自动打开的,它们时stdin,stdout和stdout。

        1。fopen函数

              fopen函数类似于底层的open系统调用。如果你需要对设备进行明确的控制,那最好使用底层系统调用,因为这可以避免用库函数带来的一些潜在问题,如输入输出缓冲。

              #include<stdio.h>

                FILE *fopen( const char *filename , const char *mode );

                mode 指定文件的打开方式:

                      “r”或“rb”:以只读方式打开

                      “w”或“wb”:以写方式打开,并把文件长度截断为零。

                      “a”或“ab”:以写方式打开,新内容追加 在文件尾。

                      “r+”或“rb+”或“r+b”:以更新方式打开(读写)

                      “w+”或“wb+”或“w+b”:以更新方式打开,并把文件长度截断为零。

                      “a+”或“ab+”或“ab+”:以更新方式打开,新内容追加到文件尾。

                       字母“b”表示文件是一个二进制文件而不是文本文件。LINUX并不想MS-DOS那样区分文本文件和二进制文件,

                        所有文件都是二进制文件。

                       mode参数必须是一个字符串,而不是一个字符,所以总是应该使用双引号,而不是单引号

                 fopen在成功时返回一个非空FILE *指针,失败时返回NULL值,NULL在头文件stdio.h中定义。

         2。fread函数

                #include<stdio.h>

                size_t fread( void *ptr ,  size_t size , size_t nitems , FILE *stream );

                数据从文件流stream读到有ptr指向的数据缓冲区里。size参数指定每个数据记录的长度,计数器nitems,给出要传输的记录的个数。

                它返回成功读到数据缓冲区的记录个数,而不是字节数。

         3。fwrite函数

                #include<stdio.h>               

                size_t fwrite ( const void *ptr ,size_t size ,size_t nitems , FILE *stream);

         4。 fclose函数

                #include<stdio.h>

                 int fclose( FILE *stream)

                 fclose库函数关闭指定的文件stream,使所有尚未写出的数据都写出。

         5。fflush函数

                fflush库函数的作用是把文件流里的所有未写出的数据立刻写出。

                #include< stdio.h >

                int fflush ( FILE *stream );

        6。fseek函数

              #include<stdio.h>

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

              fseek 返回的是一个整数,0表示成功,-1表示失败并设置errno指出错误。

              lseek返回的时一个off_t数值。

         7。fgetc,getc,getchar函数

               #include<stdio.h>


               int fget( FILE *stream);

               int getc( FILE *stream);

               int getchar() ;

               fgetc函数从文件流里取出下一个字节并把它作为一个字符返回。当它到达文件尾或出现错误时,它返回EOF。

               你必须通过ferror或feof来区分这两种情况。

               getc和fgetc一样

               getchar函数的作用是从标准输入里读取下一个字符。

      

               #include<stdio.h>

  

                int fputc( int c , FILE *stream );

                int putc(int c , FILE *steam);

                int putchar( int c );


         8。fgets和gets函数

               #include <stdio.h>        

              

               char *fgets( char *s , int n,FILE *stream )

               char *gets( char *s) 

               fget把读到的字符写到s指向的字符串里,直到遇到下面某种情况:遇到换行符,已经传输了n-1个字符,或者到达文件尾。

               它会把遇到的换行符也传递到接收字符串里,再加上一个表示结尾的空字节\0。一次调用最多只能传输n-1个字符,因为它

                必须把空字节加上以结束字符串。

               gets函数类似fgets,只不过它从标准输入读取数据,并丢弃遇到的换行符。它在接收字符串的尾部加上一个null字节。

                gets函数对传输字符的个数并没有限制, 可能会溢出自己的传输缓冲区。


              







               















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值