[問題]字串大小問題

看板C_and_CPP (C/C++)作者 (一定要上!!)時間16年前 (2009/12/28 04:27), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 我想請問字串大小陣列的問題 假設我令 char name[10] 代表我的字元不能超過10個 包含\0結束字元 但以下這程式 為何可以輸入超過10個字元 然後沒出現問題 我輸入alicemyname+\0 已經11個字元 為何還可以 顯示出來 照理講不是會出錯嗎?? 問題很簡單 希望可以解決我的疑惑!! 謝謝 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) vc++ 有問題的code: (請善用置底文標色功能) #include <stdio.h> #include <stdlib.h> int main(void) { char name[10]; /* 宣告字元陣列 */ printf("What's your name: "); scanf("%s",name); /* 輸入字串,並由字元陣列name所接收 */ printf("Hi, %s, How are you?\n",name); /* 印出字串的內容 */ printf("sizeof(name)=%d",sizeof(name)); system("pause"); return 0; } /* What's your name: alicemyname Hi, alicemyname, How are you? sizeof(name)=10請按任意鍵繼續 . . . -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.24.22

12/28 05:58, , 1F
因為 char name[10] 只是跟系統要十個空間,你輸入的字串
12/28 05:58, 1F

12/28 05:58, , 2F
如果過長的話系統不會擋,反而會蓋掉其它的記憶體,至於
12/28 05:58, 2F

12/28 05:59, , 3F
是什麼東西被蓋掉、會不會爆炸,就要看程式編排以及運氣了
12/28 05:59, 3F

12/28 09:07, , 4F
可以問一下sizeof(name) 這個上面沒定義,還是有其他意
12/28 09:07, 4F

12/28 09:07, , 5F
思??
12/28 09:07, 5F

12/28 15:46, , 6F
sizeof查位元組~~我想在再請問一下所以只是運氣好
12/28 15:46, 6F

12/28 15:47, , 7F
沒被擋掉 那照理講超過10個字元 應該都會錯吧~~
12/28 15:47, 7F
文章代碼(AID): #1BDyCuvF (C_and_CPP)
文章代碼(AID): #1BDyCuvF (C_and_CPP)