最近、私はK & Rの本からCを学んでいて、エラーを見つけました。私が分かっていることから、セグメンテーションフォールトはメモリと関係がありますが、本書では説明されていません。私のコードを見て、セグメンテーションの欠陥が何であるか、そしてこのエラーがどのように私のコードにあるのかを説明してください。ありがとうございました。あなたがゼロにndigit
を初期化していないC lang:セグメンテーションフォールト11
#include <stdio.h>
#define MAXLINE 256
int main() {
int c, ndigit[10], i, d, e;
char str[MAXLINE];
while ((c = getchar()) != EOF) {
if (c >= '0' && c <= '9')
++ndigit[c - '0'];}
for (i = 0; i <= 9; i++) {
for (d = 0; d < ndigit[i]; d++)
str[d] = '*';
str[d] = '\0';
printf("%d: %s\n",i,str);
for (e = 0; e <= MAXLINE; e++)
str[e] = '\0';
}
return 0;
}
'for(e = 0; e <= MAXLINE; e ++)'は 'for(e = 0; e