这个是我想要第一行输入数字个数,然后第二行输入几个数字,中间用空格隔开,然后再把这几个数按列排出来。
可是提交的时候说输出是错的,那个行数比标准输出多了一行,我猜是因为输入的两行之间多出来的那一行...
可是怎么把它删掉啊???????
原因: 出现的那个空行是因为你在输完数字10之后敲下的回车被捕捉打印出来了,即被scanf语句后面的 b=getchar() 捕捉,被第一次循环里的 putchar(b) 打印出来了。
解决: 把输入完成后敲的回车吸收掉,不让它被赋值给 b 。
即, 在 b=getchar() 前加一条语句: getchar()
#include <stdio.h>
int main(void)
{
int a;
char b;
scanf("%d", &a);
getchar(); //吸收回车字符
b = getchar();
while(b != EOF) {
if(b != ' ') {
putchar(b);
} else {
putchar('\n');
}
b = getchar();
}
return 0;
}