(求助!)C++字符串出现'\0'时的问题!!

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:14:57
字符串加密问题:加密的规则为字符串的每一位等于自身与其后面一位相异或的结果,字符串的最后一位与第一位相异或
??:加密时当我输入‘abcde‘类似的字符串可以加密出来,但我只要输入'abbcdef'(有连续相同的字符)时,只能加密第一个,应该是因为相同字符相异或后值变成了0使字符串结束,怎么解决这个问题??
下面是我的加密算法。
#include<iostream.h>
#include<string.h>
#include<stdio.h>
char *jiami(char*a,int n)
{
char *chu=new char[n+1];
for(int i=0;i<n-1;i++)
{
chu[i]=a[i]^a[i+1];
}
chu[n-1]=a[n-1]^a[0];
chu[n]=0;
return chu;
}
void main()
{
int k;
char *ru,str[100];
ru=str;
printf("请输入要加密的字符串:");
cout<<"请输入要加密的字符串:";
gets(ru);
k=strlen(ru);
cout<<"未加密的字符串:"<<ru<<endl;
cout<<"加密后的字符串:"<<jiami(ru,k)<<endl;
}
兄弟啊,编译是通过了,运行有问题(遇到问题需要关闭)~~

你必须得另外加一个变量返回以表示加密后密文的长度。不然你的问题无法解决。

思路跟你的一样,今天心情高兴,就给你批一段!已通过编译,给分吧!
#include<iostream.h>
#include<string.h>
#include<stdio.h>
void jiami(char*a)
{
char flag=a[0];
for(int i=0;i<strlen(a)-1;i++)
a[i]=a[i]^a[i+1];
a[i]=a[i]^flag;
}
void main()
{
int k;
char *ru=new char [100];
cout<<"请输入要加密的字符串:";
cin>>ru;
jiami(ru);
cout<<"加密后的字符串:"<<ru<<endl;
}
写程序还有很大提高哟!