c-在尝试打印字符串后坠毁二维数组



我想要一个动态的字符串,因此指示数组的指针。这是我的代码(我的程序在打印后崩溃):

typedef struct person{
    char *name;
    char **children;
    struct person *nextPerson;
}Person;
int main( ){
    int kidsNum = 1;
    int i;
    Person *first = (Person*)malloc(sizeof(Person));
    first->name = "George";
    first->children = malloc(kidsNum * sizeof(char*));
    for (i = 0; i < kidsNum; i++){
        //every string consists maximum of 80 characters
        (first->children)[i] = malloc((80+1) * sizeof(char));
        scanf("%s",((first->children)[i]));
        printf("%s",(*((first->children))[i]));
    }
}

它在printf之后崩溃了,我不知道它是因为变臭而崩溃,否则我不知道如何在方案中正确打印字符串。

当您放置指针时(这是((first->children)[i])是什么)时,您可以获得指向指向的内存值。

在您的情况下, (*((first->children))[i])单个字符(即 char),而不是字符串。试图将其打印成字符串将导致不确定的行为和可能的崩溃。

不要放弃指针:

printf("%s",first->children[i]);

相关内容

  • 没有找到相关文章

最新更新