1.getchar
int getchar ( void );
Get character from stdin
Returns the next character from the standard input (stdin).
It is equivalent to calling getc with stdin as argument.
getchar什么字符都会读,包括空白符和换行符,并且一次只读一个字符。
getchar()直到遇见ENTER 键才返回,返回值是第一个字符,但是后面的字符也不会被丢弃,而是保存在一个缓冲区内。
2.fgets与gets
fgets函数fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
gets()将删除新行符, fgets()则保留新行符.
要去掉fgets()最后带的“\0",只要用 s[strlen(s)-1]='\0';即可。
fgets不会像gets那样自动地去掉结尾的\n,所以程序中手动将\n位置处的值变为\0,代表输入的结束。
与gets fgets`:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题
以下插入一段程序
分别执行结果如下,先是fgets
然后是gets
可以发现,输入as fgets的长度为3,gets的为2,并且输出时,fgets多出了换行,在输入数据时,把换行符存入字符串中了。
3.scanf
scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,scanf函数的一般形式为:scanf(“格式控制字符串”, 地址表列);
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。
例如:&a、&b分别表示变量a和变量b的地址
注意:
(1)使用scanf输入字符串一定不能写成“scanf("%s",&str);”,因为str是数组名,作为一个地址存在,是不能再进行“&”运算的。
(2)scanf用%s接收字符串的时候,遇到空格就会停止。如果想输入多个单词,需要多次调用scanf()