gets(s)
s
是字符数组名(如果是指针的话,需要先给指针分配一块内存空间,才可以使用gets()
函数对其进行赋值)。
gets()函数是读取整行输入,允许输入的字符串中带有空格,直到遇到换行符
停止,然后删去换行符只读取其它的字符并在结尾加上代表字符串终止的字符’\0’。
存储n个字符,至少需要定义一个有效长度为n+1的字符数组,留一个位置来存储’\0’字符。
gets()有返回值,如果输入成功返回字符串第一个字符的地址,输入失败则返回NULL。
(’\0’无法手动输入,可以在程序内进行赋值,如str[i] = 0;
或者str[i] = '\0';
)
但是gets()函数无法判断字符数组空间能否装下输入的字符串,所以可能会导致缓冲区溢出,将字符写入到与其相连的内存空间。
getchar()
getchar()函数有一个整型的返回值,当发生读取错误的时候,返回整型值-1,当读取正确的时候,它会返回用户从键盘输的第一个字符对应的编码值。
逐个读取字符,在逐个读取完毕后,需要手动在最后一位字符后加上一个’\0’字符,getchar()函数不会自动自动加上’\0’字符。
scanf("%s", s)
s
必须是字符型数组名,该函数遇到回车
或空格
输入结束,并在结尾加上代表字符串终止的字符'\0'
一起写入字符数组中。