簡體   English   中英

使用strlen()設置字符數組長度會返回錯誤的大小

[英]Setting char array length with strlen() returns wrong size

我正在嘗試使用傳入的c字符串的長度創建一個新的c字符串。 我將變量設置為舊字符串的長度,然后嘗試設置具有該長度的新c字符串,但檢查該長度是否返回1。為什么會發生這種情況?

//This function will return a pointer to a char array
char *encrypt(char plainText[], char code[]){
    int i = 0,j = 0;
    //length of plainText
    int len = strlen(plainText);
    printf("len %i\n",len); //8
    //I am declaring a pointer here
    char *x;
    //make a string for the cipherText
    char cipher[len];
    printf("cipher %lu\n",strlen(cipher)); //1
    return "Nothing";
}

數組cipher 未初始化 它的內容是不確定的 (並且似乎幾乎是隨機的)。 它可能根本不包含字符串終止符,這意味着strlen在搜索時會超出范圍。 在您的特定情況下,您似乎很幸運,數組中的第二個元素恰好是終止符。

而且您似乎忘記了char字符串實際上稱為以null終止的 字節字符串 空終止符也需要空間。 並且當然存在。

所有的機會都是不確定的行為

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM