我有这个功能:
unsigned char* encrypt_decrypt( unsigned char* text,unsigned char* pass)
{
unsigned char *s=(unsigned char*)malloc(strlen((char*)text+1)*sizeof(unsigned char));
int length=strlen((char*)text);
printf("chestii:%d",sizeof(s));
for(int i=0;i<length;i++)
{
s[i]=text[i]^pass[i];
printf("text:%d\n",text[i]);
printf("pass:%d\n",pass[i]);
printf("cript:%d\n",s[i]);
}
s[length]='\0';
return s;
}
文本和传递具有确切的长度,并且s指针应该与函数末尾的文本具有相同的长度。例如,假设文本和传递有26个字符。我不知道为什么但是在for指令结束时,s指针的长度只有10.我分配了足够的内存,我想我在s中放了26个元素。请帮我弄清楚strlen(s)只有10个?
答案 0 :(得分:1)
strlen计数到0字节,所以如果一个字母在文本中是通用的并且传递它会提前终止字符串因为text [i] ^传递[i] == 0如果text [i] == pass [i ]