请大伙帮忙看一下,好吗?
394311791(追求) 20:35:32
#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、回复次数:5Top
1 楼falcon1210(黑暗星星)回复于 2004-09-03 21:34:59 得分 0
memset(retstr,'0',sizeof(retstr));
有值了Top
2 楼falcon1210(黑暗星星)回复于 2004-09-03 21:45:59 得分 0
不过程序还不对^_^Top
3 楼maxcode(人弋石马)回复于 2004-09-03 22:07:48 得分 0
楼主返回局部变量了
#include <stdio.h>
#include <string.h>
#include <conio.h>
char *strencode(char *sourcestr,char *desstr);
char *strdecode(char *sourcestr,char *desstr);
void main()
{
char *s,*s1,*s2;
char sa[512],sa1[512],sa2[512];
s="afsdfsdf";
printf("source=%s\n",s);
s1=strencode(s,sa1);
printf("s1=%s\n",sa1);
s2=strdecode(sa1,sa2);
printf("s2=%s\n",sa2);
system("pause");
}
char *strencode(char *sourcestr,char *desstr)
{
int i,iasc;
char retstr[512];
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]+3;
desstr[i]=(char)iasc;
}
desstr[i]='\0';
return retstr;
}
char *strdecode(char *sourcestr,char *desstr)
{
int i,iasc;
char retstr[512];
memset(retstr,0,sizeof(retstr));
for(i=0;i<strlen(sourcestr);i++)
{
iasc=(int)sourcestr[i]-3;
desstr[i]=(char)iasc;
}
desstr[i]='\0';
return retstr;
}
字符串的'\0'丢了
还有一个问题哦
没分
吐血!!!
Top
4 楼comebaby(游民)回复于 2004-09-03 22:11:35 得分 0
改动如下:vc6测试通过
#include <stdio.h>
#include <string.h>
char *strencode(char *sourcestr);
char *strdecode(char *sourcestr);
void main()
{
char *s,s1[20],s2[20];
s="afsdfsdf";
strcpy(s1,strencode(s));
printf("s1=%s\n",s1);
strcpy(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++)
retstr[i]=sourcestr[i]+3;
retstr[i]='\0';
return retstr;
}
char *strdecode(char *sourcestr)
{
int i,iasc;
char retstr[512];
memset(retstr,0,sizeof(retstr));
for(i=0;i<strlen(sourcestr);i++)
retstr[i]=sourcestr[i]-3;
retstr[i]='\0';
return retstr;
}Top
5 楼longjunhua(君华)回复于 2004-09-03 23:05:51 得分 0
出问题和空字符无关,是因为返回局部变量Top




