帮忙看一下,不要因为没分而。。。我已经没分了。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char *strencode(char *sourcestr);
char *strdecode(char *sourcestr);
void main()
{
char *s,*s1,*s2;
clrscr();
s="afsdfsdf";
printf("source=%s\n",s);
s1=strencode(s);
printf("s1=%s\n",s1);
s2=strdecode(s1);
printf("s2=%s\n",s2);
}
char *strencode(char *sourcestr)
{
int i,iasc;
char retstr[512];
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]+3;
retstr[i]=(char)iasc;
}
return retstr;
}
char *strdecode(char *sourcestr)
{
int i,iasc;
char retstr[512];
memset(retstr,0,sizeof(retstr));
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]-3;
retstr[i]=(char)iasc;
}
return retstr;
}
输出 printf("s2=%s\n",s2);
s2没有值?
问题点数:0、回复次数:4Top
1 楼fanbest(座天使长)回复于 2004-09-03 21:32:12 得分 0
retstr是一个局部变量,用完函数后自动销毁,
而你return后的是一个无效的指针.Top
2 楼Zark(金陵五月)回复于 2004-09-04 02:15:22 得分 0
楼上的意见正确. 最省的改动如下:
char *strencode(char *sourcestr)
{
int i,iasc;
static char retstr[512];
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]+3;
retstr[i]=(char)iasc;
}
return retstr;
}
char *strdecode(char *sourcestr)
{
int i,iasc;
static char retstr[512];
memset(retstr,0,sizeof(retstr));
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]-3;
retstr[i]=(char)iasc;
}
return retstr;
}
Top
3 楼sbxlj(数到三)回复于 2004-09-04 09:15:29 得分 0
多帮人家解决问题,也不致于没分啊,。
呵呵Top
4 楼junmayang(笨猪)回复于 2004-09-06 14:44:00 得分 0
这样的问题太多了Top




