请登陆!   免费注册 | 忘记密码 | 问题建议
小娃子首页 |亲子社区

551

浏览数
输入/输出函数
2012-07-27 13:02:33    分类:默认分类  

1、规范规则了规范函数库中的函数接口独霸,有助于提高挨次的可移植性;

2、标准库函数在errno中保管错误代码以后将这个信息通报给用户,提示垄断败北的原由;

   注:只要当一个库函数失利时,errno才会被设置装备摆设,当函数成功履行时,errno的值不会被批改,因而我们不能经由过程测试errno的值来果断可否有错误发生发火,运用perror是一个很好的办法;

3、perror函数与exit函数

perror函数原型:

      void  perror(char const *message);
exit函数原型:
      void exit(int status);
注:预约义符号EXIT_SUCCESS与EXIT_FAILURE离别默示步骤的终止的胜利照旧打败仗;

4、标准I/O函数库的两个弊端:

(1)在某台特定类型的机器上实现,并不有对其它存在差异本性的机械做适量的思虑(偶尔是由于架构的不合,譬如x86与ARM);

(2)由于第一个错误谬误的影响,屡屡会批改此中的函数完成,从而招致可移植性低;

5、筹划调试步伐时,某些函数挪用的输入终究被写入缓冲区中,但是并不马上展示在屏幕上,而紧要查看终于的状况:

   在每个调试的printf函数以后即时挪用fflush函数;

    printf("hello");    ffulsh(stdout);
6、一个步伐同时最多能掀开若干好多文件——可以查看FOPEN_MAX认识,它的值至多为8;

最长文件名——可以查看FILENAME_MAX;

7、I/O函数以三种底子的内容处置惩罚数据:单个字符、文本行与二进制数据;

    

8、fopen函数原型:

   FILE *fopen(char const *name, char const *mode);
name是巴望打开文件或设备的名字,mode参数默示流是用于只读、只写、还是读写以及是文本流照常二进制流;

注:应该不停查看fopen的前往值,如果函数失败会前去一个NULL值;不然NULL指针会传给后续的函数,它们将对其发展间接会面会导致战败;

9、fclose函数原型:

   int fclose(FILE * f); 
 fclose函数在文件关闭以前刷新缓冲区,假设实行胜利,fclose前去零值,不然前去EOF(这也是为何返回int值的缘故原由,在之前有叙说);

10、关于错误搜查:

   在思忖错误搜检的时刻,思考两个标题:(1)要是垄断告捷该当实验甚么?(2)假设垄断失败理当实验什么?

假设两个题目标谜底是分歧的,应该进行错误查抄,否则跳谬误误查看才是合理的;

11、字符I/O:

   int fgetc(FILE *stream);   int getc(FILE *stream);   int getchar(void);   int fputc(FILE *stream);   int putc(FILE *stream);   int putchar(void);
注:它们凡是返回一个int值而不是char值,是为了许可报告文件的劈脸EOF;

     fgetc和fputc凡是真正的函数,而getc、putc、getchar、putchar但凡经由#define指令界说的宏;

12、未花式化的行I/O

char *fgets(char *buffer, int buffer_size, FILE *stream);char *gets(char *buffer);
  fgets是从指定的流读取字符串的,当读取到换行符可能缓冲区存储的字符数抵达buffer_size-1时,中止读取并将一个NUL字节增进到数据的最先,使之成为一个字符串,fgets读取到达了文件的初阶就前往一个NULL值,不然前往它的第一个参数(fgets无奈把字符串读入到一个长度小于两个字符的缓冲区,由于个中一个用于NUL字节);

  gets没法果断缓冲区的长度,因此应当少用gets,当gets读取一行输入时,并不在缓冲区中存储收尾的换行符;

int  fputs(char const *buffer, FILE *stream);int puts(char const *buffer);
  fputs若是写入错误时,前往EOF,不然前往一个非负值;运用fputs时,要是缓冲区中不席卷一个换行符,就不会写入换行符,若是征求多个换行符,全数的换行符都市被写入;

  当puts写入一个字符串时,它在字符串写入以后向输出再增多一个换行符,而fputs则不会;

13、scanf家属

int  fscanf(FILE *stream, char const *format, ...);int scanf(char const *format, ....);int sscanf(char const *string, char const *format, ....);
 fscanf输入源是作为参数给出的流,scanf从规范输入读取,sscanf从第一个参数所给出的字符串中读取字符;

format字符串参数可能搜罗如下内容:

(1)空缺字符——处置中会被疏忽

(2)格局代码——疏解输入的字符

(3)其他字符——当任何此外字符出现在花式字符串中,下一个输入字符必须跟它成婚,如果结婚,该输入字符就被扔弃,否则函数就不再读取直接返回;

 格局代码样式:

  以一个%开头,(1)一个可选的星号(2)一个可选的宽度(3)一个可选的制约符(4)花式码

星号:使转换后的值被扬弃而不是存储(用于跳过不需要的输入字符);

宽度:用于限制将被读取用于转换的输入字符的个数,假定未给出宽度,函数就延续读入字符直到遇见输入中的下一个空缺字符;

限度符:用于批改有些格局码的定义,目标是指定参数的长度;

样式码:用于指定输入字符若何被评释;

限定符:

名目码:

14、printf眷属

int  fprintf(FILE *stream, char const *format, ...);int printf(char const *format, ...);int sprintf(char *buffer, char const *format, ...);
 printf将毕竟输入到标准输出,fprintf将结果输出到任何流,sprintf将终归作为一个NUL最后的字符串存储到特定的buffer中而不是写入流中;它们的返回值但凡现实打印或存储的字符数;

printf的format参数与scanf同样

format中的格局代码:以一个%一开始,(1)一个或多个标志字符(2)一个可选的最小字段宽度(3)一个可选的精度(4)一个可选的批改符(5)转换类型

符号字符:


批改符:

参数类型:

该部份最好查阅《C和指针》的原文内容;

上一篇: 古今利器——地图
下一篇: 注意:有传言许留山甜品店售过期食品

用户名: 安全退出