我目前正在学习 C,并且正在尝试构建一个简单的解释器。它需要一个字符和一个数字。下面的程序仅'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;
}
那么是什么导致程序崩溃呢?