C语言学习笔记系列(4)I/O函数

 (1)为了提示用户进行输入,或者是告诉用户目前程序的运行状态,或者为了开发人员自己调试的方便,不可避免地会在代码中加入一些输入/输出消息的处理。这就涉及到了C语言函数库中的I/O函数族。
 I/O函数主要分为两组,每组又分输入和输出。
 ①:printf/scanf , fprintf/fscanf, sprintf(snprintf)/sscanf
 ②:getc(getchar)/putc(putchar), fgetc/fputc, gets/puts, fgets/fputs
 函数原型及相关头文件如下:
 #include <stdio.h>
 int printf(const char *format, /* args*/ ...);
 int fprintf(FILE *stream, const char *format, /* args*/ ...);
 int sprintf(char *s, const char *format, /* args*/ ...);
 int snprintf(char *s, size_t n, const char *format, /* args*/ ...);
 int scanf(const char *format, ...);
 int fscanf(FILE*stream, const char *format, ...);
 int sscanf(const char *s, const char *format, ...);
 
 printf:把内容输出到标准输出设备stdout,即屏幕(控制台窗口)。
 scanf:从标准输入设备stdin(键盘)读入内容。
 fprintf:把内容输出到指定的流中。这里的流既可以是标准设备也可以是文件。例如:stdout,stderr
 fscanf:从指定的流中取得内容。
 sprintf:把内容输出到指定的字符数组中。
 snprintf:把指定长度的内容输出到指定的字符数组中。
 sscanf:从指定的字符数组中取得内容。
 以上属于格式化输入/输出函数。
 
 函数原型及相关头文件如下:
 #include <stdio.h>
 int fgetc(FILE *stream);
 int getc(FILE *stream);
 int getchar(void);
 char *gets(char *s);
 char *fgets(char *s, int n, FILE *stream);
 int fputc(int c, FILE *stream);
 int putc(int c, FILE *stream);
 int putchar(int c);
 int puts(const char *s);
 int fputs(const char *s, FILE *stream);
 
 getc:从指定流取得一个字符。
 putc:在指定流上输出一个字符。
 getchar:等价于getc(stdin)
 putchar:等价于putchar(c,stdout)
 fgetc:从指定流中取得一个字符。
 fputc:从向指定流中输出一个字符。
 gets:从标准输入stdin取得字符串。
 puts:向标准输出stdout输出字符串。
 fgets:从指定流中取得指定长度的字符串。
 fputs:向指定流中输出字符串。
 
 关于格式化IO函数,格式化参数如下:
 %d:10进制整数,%i:同%d
 %x:16进制整数
 %o:8进制整数
 %u:无符号10进制整数
 %f:10进制float小数
 %g:10进制double小数
 %e:double类型的科学计数表示
 %c:字符
 %s:字符串
 %p:地址格式
 以下为组合时使用的符号:
 %n:位数
 %-:左对齐
 下面举例说明:
 %3d:格式化成3位整数,若不足3为则前补空格.
 %03d:格式化成3位整数,若不足3为则前补0.
 %.5f:在小数点后面写数字,表示小数点后保留5位。
 %-10s:格式化成10位的字符串,并且左对齐(默认右对齐)。
 
 #include <stdio.h>
 
 int main()
 {
  printf("%03d-%.3ef-%6s-%-6s/n", 12, 12.123, "abcd","efgh");
  return 0;
 }
 运行结果为:
 012-1.212e+01f- abcd-efgh
 除了以上的符号外,还有/a,/b,/n等,其中换行符/n比较常用,这里就不再介绍了。
 
 (2)getchar/putchar:是宏还是函数?
 因为函数调用通常花费时间较长,因此getchar通常实现为宏。这个宏定义在<stdio.h>中。如果在代码中没有引入该头文件,那么程序就不认识getchar了。不过为了防止出现这样的问题,很多系统上都有getchar的函数实现,因此当没有引用<stdio.h>时,系统默认调用getchar函数而不是宏定义。
 在Solaris上,getchar就被设计成了一个宏,同时也存在函数实现。putchar与getchar情况相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值