c++返回无符号字符的数组

c++ return array of unsigned char

本文关键字:数组 字符 无符号 返回 c++      更新时间:2023-10-16

我有这个函数:

    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:%dn",text[i]);
        printf("pass:%dn",pass[i]);
        printf("cript:%dn",s[i]);
       }
       s[length]='';
       return s;
    }

文本和传递具有确切的长度,s指针的长度应与函数末尾的文本相同。例如,假设文本和通行证有26个字符。我不知道为什么,但在for指令的末尾,s指针的长度只有10。我分配了足够的内存,我想我在s中放入了26个元素。请帮我弄清楚为什么strlen(s)只有10?

strlen计数最多为0字节,因此如果一个字母在文本和pass中是公共的,它将提前终止字符串,因为text[i]^pass[i]==0如果text[i]==pass[i]。