c语言初学者对scanf函数难分辨理解的两个点(欢迎补充)

壮壮的学习笔记

scanf中%d%d和%d,%d有什么区别

简单讲"%d%c"可以以0个或多个空白字符 (空格、tab键、回车等)作为分隔符
同时 %c 不会读取空白字符,%c读取的一定是一个非空白字符
如:
输入1 a,读取的是1和a
输入2 b,读取的是2和b
输入3<回车><回车>c,读取的是3和c

而"%d%c"会读取一个数和紧挨着这个数的一个字符 包括空白字符),
如:
输入1 a,读取的是1和’ ’(空格)
输入2b,读取的是2和b
输入3.a,读取的是3和.
输入3<回车>c,读取的是3和’\n’(回车)

scanf(“%d “)与scanf(”%d”)的区别? (注意引号里空格位置)

第一种:scanf("%d ",&a[i]);
引号中只有两个部分:%d和一个空格

%d 表示首先从输入缓冲区中读取空白符并且抛弃,然后读取数字,直到读到非数字字符停止,并且将该字符放回到输入缓冲区中,然后把读到的数值赋值给a[i]。

空格表示从输入缓冲区中一直读取空白符并且抛弃,直到遇到一个非空白符停止。

“键盘键入:5 3 2回车”时,因为回车也是空白符,不能结束空格的匹配。所以需要额外的输入一个非空白符

你可能感兴趣的:(c语言,c语言)