标准I/o编程

  串口应用编程的I/O读写是基于文件描述符的。这些都是基本的I/o控制,是不带缓存的。而本节所要讨论的I/O操作都是基于流缓冲的,它是符合ANSI C的标准I/O处理。

  标准I/O提供流缓冲的目的是尽可能减少使用read()和write()等系统调用的的数量。标准I/O提供了3中类型的缓冲存储。

  1.全缓冲:在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。

      2.行缓冲:在这种情况下,当在输入和输出中遇到行结束符时,标准I/O库执行I/O操作。标准输入和标准输出就是使用行缓冲的典型例子。

  3.不带缓冲:标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用系统调用write()函数将这些字符全写到被打开的文件上。标准出错stderr通常是不带缓冲的,这就使得出错信息可以尽快显示出来。

基本操作:

  1.打开文件:fopen() fdopen() freopen() 它们可以不同的模式打开,但都返回一个指向FILE的指针,该指针指向对应的I/O流。此后,对文件的读写都是通过这个FILE指针来进行的。

        fopen()   函数可以指定打开文件的路径和模式

    fdopen() 可以指定打开的文件描述符和模式

    freopen()除了可以指定打开的文件、模式外,还可指定特定的I/O流。

  2.关闭文件  fclose()     int fclose(FILE* stream);

  3.读文件   fread()  size_t fread(void *ptr,size_t size, size_t nmemb, FILE* stream);

  4.写文件   fwrite() size_t fwrite(const void *ptr,size_t size, size_t nmemb, FILE *stream);

  

原文地址:https://www.cnblogs.com/wiessharling/p/2866382.html