簡體   English   中英

C程序在打印陣列上崩潰

[英]C program crashes on printing array

我目前正在學習C,並且正在嘗試構建一個簡單的解釋器。 它需要一個字符和一個數字。 下面的程序僅對字符使用'r' '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;
}

那么,是什么導致程序崩潰?

您對scanf的爭論是錯誤的,您需要

scanf("%c %d",&c, &n);

您的基本問題是,您沒有崩潰發生在哪里的證據,因為我敢肯定它在scanf()中。

我建議您采用兩種調試技術:

一種)。 在代碼中添加打印語句,以便了解發生了什么b)。 使用交互式調試器,以便您可以逐步進行並查看發生了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM