学到文件操作的时候被字符输入搞晕了,查了好久后大概算是清楚了吧。我试着理一下。
ch = 'z'; FILE *fp; 这两是为了下面的用法举例。
- fgetc(FILE *stream) 用法:ch = fgetc(fp); 从文件中获取一个字符。
或:ch = fgetc(stdin); 从键盘获取一个字符。
一般从文件中读取字符,是个函数。
- getc(FILE *stream) 用法:ch = getc(fp); 从文件中获取一个字符。
或:ch = getc(stdin); 从键盘获取一个字符。
一般从标准输入设备获取字符,是个宏。
在c语言中getc和fgetc用法没区别,但是由于getc是个宏,有时候使用结果会不同的。详细的我也不是很明白,有兴趣可以自己查查。
- getch() 用法:getch(); 或 ch = getch(); 从键盘获取一个字符,不显示在显示屏上。
- getche() 用法:getche(); 或 ch = getche(); 从键盘获取一个字符,显示在显示屏上。
- getchar() 用法:getchar(); 或 ch = getchar(); 从键盘获取字符存入缓存区,再从缓存区依次获取一个字符。
getch和getche不是c的标准库里的函数,要用的话要有提供这个函数的库函数。getche和getchar的区别是,getche不经过缓存,用户从键盘输入一个字符后立刻获取这个字符,也不用回车。getchar会等用户输入字符或字符串,将它存入一块缓存区中,用户按了回车之后(回车也存入缓存区),再依次从缓存区中取一个字符。getch经常用来暂停程序,然后按任意键继续。getchar可以结合while循环吸收用户输入的无效字符串。
getchar和getc、fgetc的关系
getchar == getc(stdin) == fgetc(stdin)
注意getc和fgetc还是有一点点区别的,但是理解上这么理解是可以的。
|
|