看板 C_and_CPP 關於我們 聯絡資訊
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的內容並沒有出現亂碼呢? --
liu2007:可是我CD中.....05/22 17:28
tailang:五樓會是司理馬賽大唷,五樓吃屎05/22 17:29
GGJHELLO:蓋05/22 17:29
wc2000n:五樓吃屎兼喝尿!05/22 17:29
slimasai:幹 二樓自以為神算 五樓早就去茅坑食屎了05/22 17:29
poca777:sli五樓就位05/22 17:29
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.41.30
jtmh:有沒有可能是 b[6] 原本就是 '\0' 了呢? 05/23 13:43
optimum:宣告陣列時如果有給初值 後面剩下的都會填0 05/23 14:16
zlw:因為定義該字串為空字串,空字串也是一種C-style字串,長度=0 05/23 14:38
zlw:那如果你都沒定義他是什麼字串,根本沒有\0也根本沒有字串長度 05/23 14:39
AGanPTT:陣列有設初值 後面的都會變成0 我記得是這樣 05/23 14:48