[問題] 防止內存操作越界

看板C_and_CPP (C/C++)作者 (paris)時間16年前 (2009/12/30 16:45), 編輯推噓5(617)
留言14則, 6人參與, 最新討論串1/1
程式是想要輸入10個字元 不管輸入完一個字元後是按空白鍵或是enter到下一行 一但到達10個字元之後便要跳出並列印出... #include<stdlib.h> #include<stdio.h> #include<assert.h> #include<string.h> /* 防止內存操作越界。 */ #define max 10 int main(void) { int i=0; int count=0; char array[max]; printf("input 10 character\n"); for(int i=0;i<max;i++) { scanf(" %s",&array[i]); } system("pause"); printf("%s\n",array); system("pause"); return 0; } 現在碰到的問題是... 1.只有輸入完一個字元後,按enter才能停止輸入迴圈 若是輸入完一個字元後按空白鍵,可以一直輸入 無法在迴圈到達10的時候就停止 不知道要怎麼改呢??? 2.另外就是...如果使用scanf(" %c",&array[i]); 列印出來時最後會顯示一個">" 這是為什麼阿? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.9.4.125

12/30 17:00, , 1F
C語言不會幫你做array邊界判斷, PG必須自己想辦法保證.
12/30 17:00, 1F

12/30 17:01, , 2F
你的問題可能是沒有在char array的最後補上'\0'的字串
12/30 17:01, 2F

12/30 17:01, , 3F
結束符號@_@"
12/30 17:01, 3F

12/30 17:03, , 4F
scanf那邊用%s這樣跑迴圈輸入也有點詭異....@_@"
12/30 17:03, 4F

12/30 17:04, , 5F
PG 是完美的寶石!!! XDD
12/30 17:04, 5F

12/30 17:12, , 6F
40 pg for pul , 80 pg for um
12/30 17:12, 6F

12/30 17:41, , 7F
暗黑亂入= =a
12/30 17:41, 7F

12/30 17:59, , 8F
我怎麼都看不懂, 什麼暗黑, 什麼SoJ的, 都不太懂ㄟXD
12/30 17:59, 8F

12/30 21:02, , 9F
樓上沒玩暗黑怎知道soj XD 偷噓一下
12/30 21:02, 9F

12/30 21:34, , 10F
XD
12/30 21:34, 10F

12/30 22:43, , 11F
我~~我天生神力啊.... XD
12/30 22:43, 11F

12/31 04:34, , 12F
我猜要讀的是字元 正確寫法該是 scanf(" %c",&array[i])
12/31 04:34, 12F

12/31 04:34, , 13F
然後 假如你是手打從輸入 你一定會碰到個月經問題
12/31 04:34, 13F

12/31 04:35, , 14F
17930 與 #1BB7xIhX 這兩篇 關於連續讀取字元可能碰到難題
12/31 04:35, 14F
文章代碼(AID): #1BEnCuCP (C_and_CPP)
文章代碼(AID): #1BEnCuCP (C_and_CPP)