1.常用的几种I/O函数
scanf/printf:最常用的输入与输出函数;
fscanf/fprintf:格式化输入输出;
这两种I/O方式的关系在于fscanf/fprintf代表从文件中输入/输出到文件(这里的文件并不是日常所理解的数据文件,代表着设备文件,在Linux系统内核中,万物皆文件),默认情况下这里的文件stdin,stdout以及stderr分别代表着键盘(文件),屏幕(文件),屏幕(文件),但标准输入输出中这些文件的指向可以重新定义,即输入不一定从键盘(文件),而输出也不见得是屏幕(文件)了。而scanf/printf则可以理解为已经封装好的标准输入输出函数,其指向不可更改。综上所述,其区别在于一个可指向所有文件,另一个只能指向键盘和屏幕;
重定向函数:FILE *命名=
freopen
(重新指向的文件名
, 使用权限
,需要重新指向的文件名);
例:
#include<stdio.h>
int main()
{
char str[10];
//FILE*in=freopen("come.txt","r",stdin);
fscanf(stdin,"%s",str);
//FILE*out=freopen("out.txt","w",stdout);
fprintf(stdout,"%s",str);
}
这个程序中加上注释即等效为常见的输入输出函数,将注释去掉即重定向文件从设备文件指向数据文件;
为什么要将stdout与stderr分开呢?
为了方便单独将某些信息从输出到显示器转而指向数据文件,而不影响正常标准输出;
2.getchar()与putchar()
getchar()常用来从键盘上获得单个字符,与scanf一样,将得到的内容放入缓存区,换行命令后结束输入;
getch()与其不同在于不需要换行命令,且不回显于控制台中,该函数多利用与游戏操作指令,头文件为conio.h;
PS:说的比较细方便理解,有意见或者建议请评论,互相进步!