C程序 !怪问题!

来源:百度知道 编辑:UC知道 时间:2024/09/27 10:22:19
程序目的是让输入的字符串反序存放,然后输出!

问题在这(你若输入在6个字符内,是正确的。因为只能输出6个字符)
我把有问题的每一步都“PAUSE”了,大家可以调试一下...为什么会出现这个情况;是语法错误吗?我用的是TC2.0

#include <stdio.h>
#include <string.h>
void main()
{
char* f(char[] );
char str[20];
char * ch;
int i;
/*--------------------------------------------------
输入STR,调用 处理STR函数
--------------------------------------------------*/
clrscr();
gets(str);
ch=f(str);

/*---------------------------------------------------
输出处理后的字符串
---------------------------------------------------*/

for(i=0;*(ch+i)!='\0';i++)
printf("%c",*(ch+i));
putchar(10);
system("pause");
}
char* f(char str[])
{
char ch[20];
int i,j,lenth;

lenth=strlen(str);
printf("%d\n",lenth);
system("pause");
for(i=0,j=lenth-1;i<lenth;i++,j--)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char* f(char[] );
char str[20];
char *ch;//
int i;
/*--------------------------------------------------
输入STR,调用 处理STR函数
--------------------------------------------------*/
// clrscr();
gets(str);
ch=f(str);

/*---------------------------------------------------
输出处理后的字符串
---------------------------------------------------*/

for(i=0;*(ch+i)!='\0';i++)
printf("%c",*(ch+i));
putchar(10);
system("pause");
}
char* f(char str[])
{
char *ch;// 改成这样
int i,j,lenth;
ch=(char*)malloc(sizeof(char)*20);//开辟新空间 相当于你那样开辟ch[20]不过这是动态的
memset(ch,0,sizeof(char)*20);//设置空间全为0
lenth=strlen(str);
printf("%d\n",lenth);
system("pause");
for(i=0,j=lenth-1;i<lenth;