下面是我的代码
#include<stdio.h>
void main()
{
int a[80],k=0;
char c;
printf("请输入数字空格间隔\n");
scanf("%d",&a[k]);
k++;
while((c=getchar())!='\n')
{
scanf("%d",&a[k]);
k++;
}
printf("%d\n",a[0]);
}
为什么在while((c=getchar())!='\n')这个前面得再重复写一句 scanf("%d",&a[k]);
k++; 不然我输入的第一个数,就会被丢弃掉没写进数组里,求解
为什么先执行 getchar()的话会把第一个输入的字符读走??后面的数为啥就不会读走呢?为啥c=getchar()为读走数字见得空格?好好好多疑问哦...请赐教~
为什么先执行 getchar()的话会把第一个输入的字符读走??后面的数为啥就不会读走呢?为啥c=getchar()为读走数字见得空格?好好好多疑问哦...请赐教~
追答执行 getchar() 会从缓冲区里读走一个字符。
你先执行它,当然会把缓冲区里第一个字符读走,
执行完这个,后面执行 scanf("%d",&a[k]); 就会把一个整型数读走,这个数以不是数的字符结尾。如 123A 从缓冲区里读到A时不是数字就会以123给a[k],当然空格也是一样。
这个函数并不把后面不是数字的那个读走,它还在缓冲区里,这时再执行 getchar() 就会把后面那个不是数字的字符从缓冲区里读走。