c一个小问题小问题小问题……

来源:百度知道 编辑:UC知道 时间:2024/06/15 01:12:13
#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是不是不该用在这里啊?可是改怎么跳出去呢?
}
可是结果虽然不会用多余的换行符补足剩余空间了,可是输出结果的最后总是会跟几个乱码

请问为什么 怎么解决 谢谢谢谢!!!!
回tanyugou:谢谢,但如果就在我这个代码的基础上改进该怎么改呢?不用getch的情况下- -

#include<stdio.h>
#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 ('\n'==i[I-1][a])
{
break;
}

}

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

return 0;
}

按照你的要求在你的程序基础上改的,调试后没问题。
补充回答:当你输入少于10个字符的时候,在最后一个有效字符后你敲的是“回车”,也就是说,在最后一个有效字符的后面的一个元素里放的是“回车”。所以在输出的时候每输出一个我都判断一下这个是不是回车,不是的话就输出并指向下一个元素,如果是“回车”,表示已经输出完最后一个了,其余的就不做输出了。

用getch或者getche来接收输入,它们两个是不需要按回车的

用gets输入字符串,你试试看。输入字符我经常这样做的。