首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问:关于scanf函数的一个小疑点(待!)

2012-02-05 
请教大虾:关于scanf函数的一个小问题(在线等待!)for(i0i Ni++){printf( the%dth: ,i+1)scanf( %d

请教大虾:关于scanf函数的一个小问题(在线等待!)
for   (i=0;i <N;i++)
{
                                              printf( "the   %d   th: ",i+1);
                                            scanf( "%d   ",&a[i]);//
                                            scanf( "%d ",&a[i]);/*就是这个空格的问题,有什么好的解释吗???在线等待!*/
                }

[解决办法]
空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

也就是说,对于:
scanf( "%d ", &a);
printf( "%d ", a);

需要输入:3 2后才会打出一个3,因为输入&a之后格式串中还有空格符会略去空白字符,所以要输入一个非空白符才会结束输入。
[解决办法]
scanf( "%d ",&a[i]);// 把这里的 “” 中的空格去掉
scanf( "%d ",&a[i]);

%d 输入整数,这个时候,空格、回车、\t退格符都会被处理为数据分割符,这些分隔符会被自动忽略。
[解决办法]
为什么只是第一个输入那样,而后面的不会呢
-----------------------------------------
第一次输入了两个数,其中第一个数被第一次的scanf ()接收,而第二个数还停留在输入缓冲区中,当遇到下一个scanf ()的时候才被接收到。

如果你在scanf ()后面加一个getchar(),则不会出现你上面那种情况了。

for (int i=0; i <5; i++)
{
printf( "\nthe %d th: ",i+1);
scanf( "%d ",&b);
getchar ();
printf ( "%d ", b);
}

热点排行