一个问题……很小很白

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:16:53
#define I 3

int main(void)
{

char i[I][10];
int a;

for (a = 0; a < 10; a++)
{
scanf("%c",&i[I-1][a]);
}

for (a = 0; a < 10; a++ )
{
printf("%c",i[I-1][a]);
}

return 0;
}

当输入不足10个字符的时候,按回车也不会输出,直到回车补足了剩下的字符他才会输出,怎么改这一点?
我试着在scanf下面加上这些,判断一下是否是换行符:
if ('\n'==i[I-1][a])
{
break; //break是不是不该用在这里啊?可是改怎么跳出去呢?
}
可是结果虽然不会用多余的换行符补足剩余空间了,可是输出结果的最后总是会跟几个乱码

请问为什么 怎么解决 谢谢谢谢!!!!

我不想用getchar和putchar 谢谢

出现乱码是因为,比如你输了6个字符就跳,数组后面4个字符位置是没初始化的,值不确定.aund1986为正解.你也可以在声明数组后马上显式初化.

不想用getchar和putchar ?这个很困难的问题!

#define I 3

int main(void)
{

char i[I][10];
int a;

for (a = 0; a < 10; a++)
{
scanf("%c",&i[I-1][a]);
if(i[I-1][a] == '\n')
break;
}
i[I-1][a] = '\0';
for (a = 0; a < 10 && i[I-1][a]!='\0'; a++ )
{
printf("%c",i[I-1][a]);
}

return 0;
}