簡體   English   中英

動態分配字符串數組

[英]Dynamically allocating array of strings

我想動態分配字符串數組,但是我不確定如何做到這一點。 因此,我想到了一個結構並動態分配該結構。 因此,我在下面編寫了代碼,但是此代碼創建了斷言失敗。

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

typedef struct {
    char str1[20];
    char str2[20];
} String;

int main(void)
{
    String * list;
    list = (String *)malloc(sizeof(String));
    int i = 1;

    for (; i < 6; i++) {
        realloc(list, i * sizeof(String));
        printf("Input String 1: ");
        scanf("%s", list[i - 1].str1);
        printf("Input String 2: ");
        scanf("%s", list[i - 1].str2);
    }

    for (i = 0; i < 5; i++)
        printf("%s\t%s\n", list[i].str1, list[i].str2);
    free(list);
}

我做錯了什么,該如何解決呢?

謝謝 :)

重新realloc的手冊頁顯示:

realloc()函數返回一個指向新分配的內存的指針,該指針適合於任何類型的變量,並且可能與ptr不同,如果請求失敗,則為NULL。

新指針可以與傳遞給realloc指針不同,因此您需要收集並使用realloc返回的指針。

結構始終具有相同的大小,因此使用此實現時,您將始終擁有大小為2的數組。

聲明字符串數組(本身就是字符數組)的一種方法

char **string;

如果您想要20個字符串組成的數組,則為:

string = malloc(sizeof(char*)*20); 

結構必須具有恆定的大小,因此我不認為編譯器會喜歡您嘗試為結構分配比其定義的更多的內存。

暫無
暫無

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

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