私は現在Cを学んでいて、簡単なインタプリタを作ろうとしています。1文字と1つの数字が必要です。以下のプログラム'r'
はcharにのみ使用します。('r'
自然数の)範囲を表し、その後の数字は範囲の長さを指定します。
実行例:
Enter:
r 9
0 1 2 3 4 5 6 7 8
代わりに何が起こりますか:
Enter:
r 9
そして、ここでプログラムがクラッシュします。したがって、エラーは配列の印刷にあると思います。
問題のコードはここにあります:
#include <stdio.h>
#include <stdlib.h>
int* range(int i) {
int *a=(int*) malloc(i * sizeof(int));
int j;
for(j=0;j<i;j++)
a[j]=j;
return a;
}
void printArray(int a[], int length) {
int i;
printf("\n");
for(i=0;i<length;i++)
printf("%d ", a[i]);
}
int main() {
char c;
int n = 1;
while(n>=0){
printf("\nEnter:\n\t");
scanf("%c %d", c, n);
if(c='r')
printArray(range(n), n);
}
return 0;
}
では、プログラムがクラッシュする原因は何ですか?