我不明白教授关于malloc的代码

时间:2019-10-18 07:40:36

标签: c string malloc dynamic-memory-allocation

教授给我有关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]);

我希望这段代码能奏效。

for (j=0;j<3;j++)
    printf("your sentence is %s ", *parray[i])

1 个答案:

答案 0 :(得分:1)

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

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

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

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