1.gets(char *str)会把所有字符读入str,换行符'\n'会读取但不会保存,最终将被舍弃,gets函数可能会造成str溢出
2.puts(char*str)把str中所有字符打印,最终会自动追加一个换行符'\n'
3.scanf("%s",s);遇到空格,换行符会终止并跳过,但这些符号仍会存留在输入队列中,如:
char bb[10]:
if(scanf("%s",bb)==1)
{
puts(bb);
char ch=getchar();
putchar(ch);
}
输入:hello a
输出为:
hello
_(一个空格)
原因:当scanf()读取“hello”后遇到空格,停止读取,把“hello”放入bb中,后面的空格仍然停留在输入 队列中,所以后面的getchar()首先读到的是这个空格而不是后面的字符"a".
4.fgets(char *buf,int cont,FILE *fp),从fp所指流中读取最多cont-1个字符存入buf中,避免了溢出问题,当遇到文件结束符EOF或读取错误时返回NULL;
fgets()读取行分为两种情况:(buf的长度大于等于cont)
1> 行的长度大于cont,则会读取cont-1个字符存入buf中,且第cont个字符自动赋为‘\0’
2> 行的长度小于cont,即buf未满就遇到换行符,则把所有字符存入buf中,且保留换行符'\n',并且在最后附加'\0'