我的程序包含字符输入代码,但在调试期间不考虑它。
它考虑其他数据类型的输入(int,float等)
程序:
#include<stdio.h>
int main()
{
int n,i=0;
char c;
scanf("%d",&n);
int a[20];
while(1)
{
scanf("%c",&c);
if(c=='\n')
break;
else
{
if(c!=32)
a[i++]=c-48;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
答案 0 :(得分:2)
您的scanf("%d",...)
在缓冲区中留下一个新的行字符,然后由后续的scanf("%c",...)
立即使用。要解决此问题,请在scanf
消耗空格之后只允许一个scanf("%d",...)
:
int main()
{
int n,i=0;
scanf("%d",&n);
int a[20];
char c=0;
scanf(" %c",&c); // Consume white spaces including new line character before the value for c.
while(c!='\n' && i < 20)
{
if(c!=32) {
a[i++]=c-'0';
}
scanf("%c",&c);
}
for(int x=0;x<i;x++)
printf("%d ",a[x]);
return 0;
}