C语言反序打出字符数组的问题
#include <stdio.h>#include <string.h>
#define N 20
int main()
{
char a;
int i, len;
for(i = 0; a != '\n' /* i < N */ ; i++)
{
a = getchar();
/* if(a == '\n')
{
break;
}*/
}
a = '\0';
len = strlen(a);
for(i=len-1; i>=0; i--)
{
printf("%c", a);
}
return 0;
}
上面代码无法工作输入一行字符敲了回车没有反应 而用z注释掉的代码却能工作Why?
#include <stdio.h>
#include <string.h>
#define N 20
int main()
{
char a;
int i=0, len;
a = getchar();
for(;a != '\n';a = getchar())
{
i++;
}
a = '\0';
len = strlen(a);
for(i=len-1; i>=0; i--)
{
printf("%c", a);
}
return 0;
} 仰望天上的光 发表于 2012-10-16 21:49 static/image/common/back.gif
我的代码错误出在什么地方?
为什么要换一下for里面的顺序 #include <stdio.h>
#include <string.h>
#define N 20
int main()
{
char a;
int i, len;
for(i = 0; a != '\n' /* i < N */ ; i++)
//这是你的原代码,首先for语句执行顺序是
//先执行i=0,再判断a!='\n',如果成立,先执行下面的语句而不执行i++;
{
a = getchar();//然后执行这条语句,最后i++。
//这时a并没有被getchar()赋值,for中判断语句成立,继续执行for函数。
//所以永远也跳不出for循环。
//如果把a=getchar();与i++;交换,那么就先把i+1,然后执行a=getchar()。
//这时a被赋值,即当a='\n'时跳出循环。程序正确。
/* if(a == '\n')
{
break;
}*/
}
a = '\0';
len = strlen(a);
for(i=len-1; i>=0; i--)
{
printf("%c", a);
}
return 0;
} {:10_250:}
页:
[1]