char *gets(char *s) 函数从 stdin 读取一行到 s 所指向的缓冲区,直到一个终止符或 EOF。
int puts(const char *s) 函数把字符串 s 和一个尾随的换行符写入到 stdout。
但是这里有个问题,看下面例子:
#include <stdio.h>
char land();
int main( ) {
char s[5];
gets(s);
puts(s);
return 0;
}
输出结果:
定义的数组长度是5,但是输入的长度超过了5,仍然能够继续输入,继续输出;但是当输入的字符个数超过某个数的时候,程序就会崩溃,看如下:
再看getchar:
#include <stdio.h>
char land();
int main( ) {
char s;
s = getchar();
putchar(s);
return 0;
}
输出结果:
这样的话不知道有什么问题出现,只要输入字符串中开始的单个字符是正确的,后面的字符就不会被读入。
很多说gets()是个危险的函数,确实,至于解决方法,大家可以尝试尝试,这里就不展示了,因为我也是初学者。