簡體   English   中英

C 語言中的用戶定義數組程序有問題

[英]Having issues with a user defined arrays program in C

我必須編寫一個程序來編寫一個使用堆存儲數組的程序。 我有一個問題,程序在成功運行后會崩潰。 我也有一些小的美學問題,元素需要從 1 開始,並且在打印的最后一個數字上沒有逗號。 任何人都可以幫忙嗎?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int size = 0;
    int* num_elements;
    num_elements = (int*)malloc(sizeof(int) * 3);

    printf("How many int elements will you enter?");
    scanf("%d", &size);
    printf("\n");

    for (int k = 0; k < size; k++)
    {
        printf("Element %d: ", k);
        scanf("%d", &num_elements[k]);
    }

    printf("\n");

    printf("The Array stores the following values: \n\n");

    for (int j = 0; j < size; j++)
    {
        printf("%d, ", num_elements[j]);
    }

    printf("\n");    
    free(num_elements);    
    num_elements = 0;    
    return 0;
}

如果用戶輸入的值超過 3,您最終將使用超出范圍的內存。 當您使用動態內存分配時,請充分利用它。 從用戶那里詢問size的值,然后用它來調用malloc()就像

int* num_elements;

printf("How many int elements will you enter?");
scanf("%d", &size);

num_elements = malloc(size * sizeof *num_elements);

然后,要打印從1編號的元素,您可以這樣寫

printf("Element %d: ", k+1);

那說,

  1. 請參閱有關為什么不在Cmalloc()和 family 的返回值的討論。 .
  2. 使用前務必檢查malloc()的返回值是否成功。

暫無
暫無

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

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