题目是读取任意数量字符,然后倒叙打印出来,要求包括空格
原始代码
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[256];
int b;
int i=0;
printf("请输入一行字符\n");
do
{
scanf("%c",&a[i]);
i++;
}while(a[i]=='\n');
b=strlen(a)-1;
// printf("%d",b);
for(i=b;i>=0;i--)
{
printf("%c",a[i]);
}
return 0;
}
上述代码存在两处错误:1,循环条件判断出错,应该是字符a[i]!='\n'(回车),循环才继续执行。上述表述的是当a[i]=='\n'时循环才继续,所以不管输入多少字符永远只能读取一个字符;2,循环中有i++,即每次循环之后i都会加1,但是scanf赋值的是a[i-1],所以不能拿a[i]跟'\n'比较,因为此时a[i]还没有被scanf赋值,(要等到下个循环才被赋值),所以应该是拿a[i-1]与'\n'比较,修改后的代码如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[256];
int b;
int i=0;
//_Bool rig;
printf("请输入一行字符\n");
do
{
scanf("%c",&a[i]);
i++;
}while(a[i-1]!='\n');
b=strlen(a)-1;
// printf("%d",b);
for(i=b;i>=0;i--)
{
printf("%c",a[i]);
}
return 0;
}
编译后可以成功运行结果。