怎么控制C++中数组的长度
求助如何控制C++中数组的长度
#include <iostream.h>
char* jiami(const char* str);
char* jiemi(const char* str);
const char key[]={4,9,6,2,8,7,3};
const keylen=sizeof(key);
void main()
{
char* s= "the result of 3 and 2 is not 8 ";
cout < < "\n原文为: \n " < <s < <endl;
char* result1=jiami(s);
cout < < "\n密文为: \n " < <result1 < <endl;
char* result2=jiemi(result1);
cout < < "\n解密之后为: \n " < <result2 < <endl;
delete[] result1;
delete[] result2;
}
char* jiami(const char* str)
{
int len=strlen(str);
char* result = new char[len+1];
for(int i=0,j=0; i <len; i++,j=(j+1)%keylen){
result[i] = str[i]+key[j];
if(result[i]> 122)
result[i]-=90;
}
return result;
}
char* jiemi(const char* str)
{
int len=strlen(str);
char* result = new char[len+1];
for(int i=0,j=0; i <len; i++,j=(j+1)%keylen){
result[i] = str[i]-key[j];
if(result[i] <32)
result[i]+=90;
}
return result;
}结果如下:
-------------------------------------
原文为:
the result of 3 and 2 is not 8
密文为:
xqk "zlvyuz "wm#7)gpl '5$ry "vvw$A妄?
解密之后为:
the result of 3 and 2 is not 8!UOPT妄齉
Press any key to continue
-------------------------------------
后面出现了乱码,而且发现result1的长度等于35,
result2的长度等于41,不知道为什么??我觉得问题出在
调用函数上.
理想的输出应该是:
-------------------------------------
原文为:
the result of 3 and 2 is not 8
密文为:
xqk "zlvyuz "wm#7)gpl '5$ry "vvw$A
解密之后为:
the result of 3 and 2 is not 8
Press any key to continue-------------------------------------
------解决方案--------------------
少了两个
result[len] = '\0 ';
#include <iostream.h>
char* jiami(const char* str);
char* jiemi(const char* str);
const char key[]={4,9,6,2,8,7,3};
const keylen=sizeof(key);
void main()
{
char* s= "the result of 3 and 2 is not 8 ";
cout < < "\n原文为: \n " < <s < <endl;
char* result1=jiami(s);
cout < < "\n密文为: \n " < <result1 < <endl;
char* result2=jiemi(result1);
cout < < "\n解密之后为: \n " < <result2 < <endl;
delete[] result1;
delete[] result2;
}
char* jiami(const char* str)
{
int len=strlen(str);
char* result = new char[len+1];
for(int i=0,j=0; i <len; i++,j=(j+1)%keylen){
result[i] = str[i]+key[j];
if(result[i]> 122)
result[i]-=90;
}
return result;
}
char* jiemi(const char* str)
{
int len=strlen(str);
char* result = new char[len+1];
for(int i=0,j=0; i <len; i++,j=(j+1)%keylen){
result[i] = str[i]-key[j];
if(result[i] <32)
result[i]+=90;
}
return result;
}结果如下:
-------------------------------------
原文为:
the result of 3 and 2 is not 8
密文为:
xqk "zlvyuz "wm#7)gpl '5$ry "vvw$A妄?
解密之后为:
the result of 3 and 2 is not 8!UOPT妄齉
Press any key to continue
-------------------------------------
后面出现了乱码,而且发现result1的长度等于35,
result2的长度等于41,不知道为什么??我觉得问题出在
调用函数上.
理想的输出应该是:
-------------------------------------
原文为:
the result of 3 and 2 is not 8
密文为:
xqk "zlvyuz "wm#7)gpl '5$ry "vvw$A
解密之后为:
the result of 3 and 2 is not 8
Press any key to continue-------------------------------------
------解决方案--------------------
少了两个
result[len] = '\0 ';