scanf("%d",&i);
scanf("%c",&ch);
在这种情况下,换行符(即在数字后按下的回车键)保留在输入缓冲区中并前进到ch,
但是在这种情况下:
scanf("%d",&i);
scanf("%s",s);
输入缓冲区不包含换行符,即缓冲区已清除(我不确定是否清除了缓冲区)并且换行符未包含在字符串s中
谁能对此有所启发?为什么在扫描字符串的情况下不使用换行符?
的行为%s
,并%c
在标准中定义。
该%s
说明符定义为采用一系列非空格字符,这意味着\n
将跳过初始空格(包括):
%s
匹配不是空格字符的字节序列。应用程序应确保相应的参数是一个指向char,有符号的char或无符号的char数组的初始字节的指针,该数组的大小应足以接受该序列和一个终止的空字符代码(应自动添加)。(文件)
%c
另一方面,对空格没有任何特殊处理:
%c
匹配由字段宽度指定的数字的字节序列(如果转换规范中没有字段宽度,则为1)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句