作者tokyobabylon (paris)
看板C_and_CPP
標題[問題] 防止內存操作越界
時間Wed Dec 30 16:45:42 2009
程式是想要輸入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
推 VictorTom:C語言不會幫你做array邊界判斷, PG必須自己想辦法保證. 12/30 17:00
→ VictorTom:你的問題可能是沒有在char array的最後補上'\0'的字串 12/30 17:01
→ VictorTom:結束符號@_@" 12/30 17:01
→ VictorTom:scanf那邊用%s這樣跑迴圈輸入也有點詭異....@_@" 12/30 17:03
推 bill42362:PG 是完美的寶石!!! XDD 12/30 17:04
→ tw00088437:40 pg for pul , 80 pg for um 12/30 17:12
→ Ag2S:暗黑亂入= =a 12/30 17:41
推 VictorTom:我怎麼都看不懂, 什麼暗黑, 什麼SoJ的, 都不太懂ㄟXD 12/30 17:59
噓 tw00088437:樓上沒玩暗黑怎知道soj XD 偷噓一下 12/30 21:02
推 sunneo:XD 12/30 21:34
推 VictorTom:我~~我天生神力啊.... XD 12/30 22:43
推 Yshuan:我猜要讀的是字元 正確寫法該是 scanf(" %c",&array[i]) 12/31 04:34
→ Yshuan:然後 假如你是手打從輸入 你一定會碰到個月經問題 12/31 04:34
→ Yshuan:17930 與 #1BB7xIhX 這兩篇 關於連續讀取字元可能碰到難題 12/31 04:35