scanf 不需要\n
scanf加了\n后,你输入一个数后,它是不会立即显示要等再接收到一个非(空格、制表符、回车)的输入scanf语句才结束。
程序没毛病。编译器的问题吧。
你把scanf中的\n去掉
可能是它需要10个换行 然后就要输入11个数
scanf中的\n去掉,不需要这个。
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了。
以后遇到这种问题,可自己输出日志排查,比如:
printf("========\n");
for(i=0; i<10; i++)
{
printf("-=-=-=%d\n", i);
scanf("%d\n", &a[i]);
printf("-----%d\n", a[i]);
}
你会发现第一次输入1时,回车后,printf("-----%d\n", a[i]);这行并未打印,直到第二次输入回车才打印。
这就会联想到跟\n有关系,然后思考解决。
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了。
以后遇到这种问题,可自己输出日志排查,比如:
printf("========\n");
for(i=0; i<10; i++)
{
printf("-=-=-=%d\n", i);
scanf("%d\n", &a[i]);
printf("-----%d\n", a[i]);
}
你会发现第一次输入1时,回车后,printf("-----%d\n", a[i]);这行并未打印,直到第二次输入回车才打印。
这就会联想到跟\n有关系,然后思考解决。
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了,不能加\n
去掉scanf里的\n
int scanf(const char * restrict format,...);
函数原型如上,输入参数里面是没有'\n'的
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了
因为你的scanf的\n与系统跳出冲突
建议把10换成Num不然就浪费了
命令行的回车作为输入的标识,scanf里不需要\n,与命令行的输入命令冲突了
print打法好
注意\n的使用,从终端键盘像计算机输入时,不是输入一个字符立马输出一个,而是是在按enter后数据才送入内存缓冲区,然后每次从缓冲区读一个字符,在输出该字符