我正在做一個數字的char數組二進制表示。我想用'\ 0'來終止字符串的結尾。它打印數組,找到預期的垃圾值。試圖終止一個字符數組,然後打印
但是,當我試圖終止數組,特別是垃圾值的索引,它不會打印出我的字符串。
int main(void)
{
char s[8] = {0};
printing_binary(s, 8, 2);
}
void printing_binary(char *s, int length, unsigned n){
for(int i = 0; i < length; i++){
if(1 & (n >> i)){
s[i] = '1';
}
else{
s[i] = '0';
}
}
//Trying to terminate my string
//s[length] = '\0';
printf(s);
}
此代碼將打印出類似01000000}
的內容。
但是,如果我取消註釋s[length] = '\0'
,它不會打印/程序停止執行。我試過打印出「Hello world」。
使用S [長度-1] =「\ 0」; – Daniel
's [length]'在數組邊界之外...即使讀取它也是未定義的行爲。最後一個元素是'[length-1]' – StoryTeller