我只是想运行一个简单的程序来计算空格,数字和其他字符数使用数组的数量。下面是我的程序:分段错误&打印一个没有循环的数组
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