Skip to content

ANSI_IO

果冻虾仁 edited this page Aug 22, 2017 · 4 revisions

文件数据格式

分为:

  • ASCII文件(文本文件,字符文件)
  • 二进制文件

区别:
比如一个数字-1000,在文本文件中分别存储五个字符的二进制码。而在二进制文件中直接存储该数字的二进制值。
文本文件更直观(可以直接用cat命令查看,或用任何编辑器打开观看),但二进制文件更节约存储空间。

FILE文件指针

//在/usr/inclue/stdio.h中
typedef _IO_FILE FILE;
//在/usr/inclue/libio.h中
struct _IO_FILE{
  char* _IO_read_ptr;	/* Current read pointer */
  char* _IO_read_end;	/* End of get area. */
  char* _IO_read_base;	/* Start of putback+get area. */
  char* _IO_write_base;	/* Start of put area. */
  char* _IO_write_ptr;	/* Current put pointer. */
  char* _IO_write_end;	/* End of put area. */
  char* _IO_buf_base;	/* Start of reserve area. */
  char* _IO_buf_end;	/* End of reserve area. *
...
  int _filene;          /*文件描述符*/
};

注意事项

文件操作结束后,都应该:

  • 关闭打开的文件,fclose(fp);
  • 文件指针置空,fp=NULL;

Linux环境编程API

C语言API包含部分标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。

头文件源码

大部分头文件源码在/usr/include目录下。

安装man手册

因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。

Ubuntu

apt-get install manpages-posix        
apt-get install manpages-posix-dev

默认安装了manpages-dev,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn函数。

CentOS

yum install man-pages.noarch

关于目录

左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。

Clone this wiki locally