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