关于一个逆序输出的C程序

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:23:30
#include<stdio.h>
main()
{
int i;
void show(char str[90]);
char str[90];

printf("请输入:");
scanf("%s", &str);

show(str);
}
void show(char str[90])
{
int i;

for(i=sizeof(str); i>=0; i--)
printf("%c", str[i]);

}
为什么只能输出5个字符啊??要怎么改进才能没这个限制呢??

先来看一下你的程序,你的程序大体上没有什么错,但是有些地方有点小问题。第一,scanf("%s", &str); 因为str是字符窜的首地址,所以不用写“&”。第二,for(i=sizeof(str); i>=0; i--) ,sizeof是什么,是可以算出括号后面的字符窜的大小,即字符窜所占用的空间,你是要知道你输入了多少个字符,不是要知道他们占了多少空间,所以要改用strlen(str); 。下面是我自己写的程序,验证过对的。
#include<string.h>
main()
{
int i;
char str[90];
void show(char str[90]);
clrscr();
printf("input:");
gets(str);
show(str);

}
void show(char str[90])
{
int i;

for(i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
}

至于你说为什么只能输出5个字符,我尝试了一下,把我的gets(str);改成scanf("%s", &str); ,当所输入的字符窜中有空格的时候,他就不会再输出手面的字母了,这个估计跟scanf的输入格式有关,希望我的回答能给你帮助!

#include<stdio.h>
#include"string.h"
main()
{
int i;
void show(char str[90]);
char str[90];

printf("请输入:");
scanf("%s", &str);
show(str);
}
void show(char str[90])
{
int i;