#include
int main()
{
char a[10];
int i=0;
while(getchar()!='\n')
{
a[i++]=getchar(); //错误在这里,上一句while(getchar()!='\n'),如果读入字符不是回车
} //那么再读入一个字符,赋给数组里的元素。也就是说,每两个字符
a[i]='\n'; //能读入第二个字符。如果读入奇数个字符,则无法结束程序。
i=0;
do
{
printf("%c",a[i++]+4);
}
while(a[i]!='\n');
}
修改如下,运行OK:
#include
{
char a;
int i=0;
while((a=getchar())!='\n')
{
printf("%c",a+4);
}
printf("\n");
}
你的问题是不是吞了几个字符啊?
getchar()的作用是获取单个字符,你不能直接用getchar()的返回值来判断是否为换行,然后循环体里面还要getchar();被吞的字符是判断条件里被吞的,因为它用于判断是否等于'\n'了,而没有被存储。
你可以这样改:
再定义一个char型变量c;
while((c=getchar())!='\n')
{
a[i++] = c;
}
#include
int main()
{
char a[10];
int i=0;
a[i++]=getchar();//改了这句
while(a[i]!='\n')//改了这句
{
a[i++]=getchar();
}
i=0;
do{
printf("%c",a[i++]+4);
}while(a[i]!='\n');}
//没环境调试,估计是这个问题
while(getchar()!='\n')
{
a[i++]=getchar();
}
a[i]='\n';
将这一段改成下面的
while(a[i++]=getchar()!='\n');
你的这个循环一次执行了两侧getchar函数。
希望你能给予采纳!