[問題] 請問一個關於字串觀念的問題

看板C_and_CPP (C/C++)作者 (薯)時間16年前 (2009/05/23 12:42), 編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/1
char a[100]="abcdef"; char b[100]; 現在我把a填到b裡面 strncpy(b, a, strlen(a)); printf("%s", b); 出現的是 abcdef亂碼亂碼亂碼亂碼亂碼亂碼亂碼亂碼亂碼亂碼亂碼 如果我把長度+1 strncpy(b, a, strlen(a)+1); printf("%s", b); 因為有把結束字元'\0'囊括進來 所以b的內容是 abcdef 可是今天我b把設初始 char b[100]= ""; 如果我猜的沒錯 b的內容應該是"\0" 今天再把a填進b裡 strncpy(b, a, strlen(a)); 這次我並沒有讓長度+1 也就是說a的結束字元'\0'不會被囊括進來 問題是印出b的內容 卻還是abcdef 沒有亂碼 為什麼? 不是把a填進b的時候 就把b[0]的'\0'也覆蓋掉了嗎? 為何b的內容並沒有出現亂碼呢? --

05/22 17:28,
可是我CD中.....
05/22 17:28

05/22 17:29,
五樓會是司理馬賽大唷,五樓吃屎
05/22 17:29

05/22 17:29,
05/22 17:29

05/22 17:29,
五樓吃屎兼喝尿!
05/22 17:29

05/22 17:29,
幹 二樓自以為神算 五樓早就去茅坑食屎了
05/22 17:29

05/22 17:29,
sli五樓就位
05/22 17:29
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.41.30

05/23 13:43, , 1F
有沒有可能是 b[6] 原本就是 '\0' 了呢?
05/23 13:43, 1F

05/23 14:16, , 2F
宣告陣列時如果有給初值 後面剩下的都會填0
05/23 14:16, 2F

05/23 14:38, , 3F
因為定義該字串為空字串,空字串也是一種C-style字串,長度=0
05/23 14:38, 3F

05/23 14:39, , 4F
那如果你都沒定義他是什麼字串,根本沒有\0也根本沒有字串長度
05/23 14:39, 4F

05/23 14:48, , 5F
陣列有設初值 後面的都會變成0 我記得是這樣
05/23 14:48, 5F
文章代碼(AID): #1A5txGPp (C_and_CPP)
文章代碼(AID): #1A5txGPp (C_and_CPP)