我听不懂关于malloc的教授代码

问题描述 投票:0回答:1

教授给我有关malloc,动态内存分配的作业...因此,他给了我一些有关代码的提示,但我听不懂他的代码和提示。我认为我的代码需要另一个“ def”或“ for循环” ...无论如何。

问题现在,我可以使用指针获取一些字符串。但我无法建立。像外语一样打印...我希望本页代码能正常工作。对于(j = 0; j <3; j ++)printf(“您的句子为%s”,* parray [i])

我和朋友们尝试了一些代码。他也想不通..教授告诉我,此代码适用于初学者,“它很容易解决”

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

void main() {
    char* parray[3];
    int i, j;
    char str[70]; // temporary save place
    for (i = 0; i< 3; i++) {        //
        printf("sentence, please. : ");
        gets_s(str, sizeof(str));   //dynamic memory allocate
        parray[i] = (char*)malloc(sizeof(char)**str);
        printf("\n");


free(parray[i]);

我希望此代码有效。对于(j = 0; j <3; j ++)printf(“您的句子为%s”,* parray [i])

c string malloc dynamic-memory-allocation
1个回答
0
投票

您应该分配输入字符串中的字符数量,空终止符为+1。

parray[i] = malloc(strlen(str)+1);

然后将数据从临时str复制到新的存储位置。

也请避免使用gets_s,而改用fgets。通常,对C11的边界检查接口的支持很少,但是当使用过时的gets重写旧代码时,此特定功能只是占位符。

© www.soinside.com 2019 - 2024. All rights reserved.