我只是想運行一個簡單的程序來計算空格,數字和其他字符數使用數組的數量。下面是我的程序:分段錯誤&打印一個沒有循環的數組
void main(){
int digit_holders[10]={0};
int ch;
int i, white_space=0,other=0;
while((ch=getchar())!=EOF){
if(isspace(ch))
white_space++;
else if(isdigit(ch))
digit_holders[ch-'0']++;
else
other++;
}
digit_holders[12]=20;
printf("\n White spaces=%d\n Other=%d\n",white_space,other);
for(i=0;i<=9;i++)
printf("\ndigit_holders[%d]=%d\n",i,digit_holders[i]);
printf("\n digit_holder[12]=%d\n",digit_holders[12]);
}
2個問題:
- 爲什麼digit_holders [12]仍設法打印儘管它是範圍之外的分配淡水河谷?爲什麼它不顯示分段錯誤?當我將for循環檢查更改爲= 11它管理打印digit_holders [11] = 0(它不應該)時,會發生同樣的情況。但是,當我將11/10與1100即數字持有人[1100]在任何情況下,程序崩潰(分段故障)。爲什麼這樣 ?
- 有沒有更簡單的方法來打印這個數組的元素而不使用for循環?
- 謝謝!
輕鬆地在Python中打印出一串字符串,不需要,您需要一個循環來打印C中的數組內容。您正在分配的數組的第12個元素僅聲明瞭10個元素,它有風險做和不穩定,但不一定會導致seg故障,因爲如果操作系統在寫入和讀取之間的時間內沒有修改它你的指針將毫無錯誤地解析這個值。但是,風險很大。 – 2014-11-01 11:08:01