#include "stdio.h"
#include "string.h"
char *output(char name[]);
main()
{
char name[20];
scanf("%s",name);
printf("%s",output(name));
}
char *output(char name[])
{
int i,n;
char *p
char b[20];
n=strlen(name);
for(i=0;i<n;i++)
b[i]=name[n-1-i];
p=b;
return p;
}
请问哪里出问题了,并解释原因
一定要解释原因哦
我说的是用C 编 char *b=new char[20];能行吗? 你这好像还有错误吧
追答在我的机上VC6.0可以运行!
追问我用的是Turbo C, char *b = new char[20];这句好像不行吧
追答#include "stdio.h"
#include "string.h"
#include "stdlib.h"
char *output(char name[]);
main()
{
char name[20];
scanf("%s",name);
printf("%s\n",output(name));
}
char *output(char name[])
{
int i,n;
char *p;
//把b的内存放到堆上去,它的生命周期就全局了.
char *b = (char *)malloc(20);
memset(b, 0, 20);//初始化.
n=strlen(name);
for(i=0;i<n;i++)
b[i]=name[n-1-i];
p=b;
return p;
}
你写的代码很不错,是我想要的
你能帮我看看一楼的代码,它的出了一点问题,就是你输入字符串后看不到结果,系统自动退出
帮帮忙多谢了
#include "stdio.h"
#include "string.h"
char *output(char name[]);
main()
{
char name[20];
scanf("%s",name);
printf("%s",output(name));
}
char *output(char name[])
{
int i,n;
char *p;
char b[20];
memset(b, 0, 20);//他这里也没有初始化,就是这个问题
n=strlen(name);
for(i=0;i<n;i++)
b[i]=name[n-1-i];
strcpy(name,b);//p=b;//局部变量b是放堆栈的,函数返回后其内存被系统回收。
return name;
}
我写的代码怎么不行呢?请解答多谢了
追答逻辑有问题。
char *p; //不仅这儿少分号,而且p,b都是局总变量,函数调用完毕后释放,主程序不能访问的。
char b[20];
......
return p; //p及p所指的对象b都释放了,返不回去的。
逻辑有问题。
char *p; //不仅这儿少分号,而且p,b都是局总变量,函数调用完毕后释放,主程序不能访问的。
char b[20];
......
return p; //p及p所指的对象b都释放了,返不回去的。
好像还没有实现我说的功能哦
输入字符串后,反向输出
我运行后还是原样输出啊
我机器动迁情况如下:
abcde
edcba请按任意键继续. . .
你能看一下楼上的程序代码吗?不过他写的也有一定的问题,就是输入字符串后按回车键后,系统自动退出,看不到结果