(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情况相同。
C语言学习笔记系列(4)I/O函数
最新推荐文章于 2022-02-23 15:02:25 发布