我能';我不明白教授的意思;关于malloc的代码

我能';我不明白教授的意思;关于malloc的代码,c,string,malloc,dynamic-memory-allocation,C,String,Malloc,Dynamic Memory Allocation,教授给我一个关于malloc的作业,动态内存分配。。。 所以他给了我一些关于代码的提示,但我不理解他的代码和提示。 我认为我的代码需要另一个“def”或“for循环”。。。 无论如何 问题现在我可以得到一些带指针的字符串。但我不能建造。 像外星人的语言一样打印。。。 本页的最后一页,我希望这段代码能够正常工作。 对于(j=0;j您应该分配输入字符串中的字符量,+1作为空终止符 parray[i]=malloc(strlen(str)+1); 然后将数据从临时str复制到新的内存位置 另外,请避免

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

问题现在我可以得到一些带指针的字符串。但我不能建造。 像外星人的语言一样打印。。。 本页的最后一页,我希望这段代码能够正常工作。
对于(j=0;j您应该分配输入字符串中的字符量,+1作为空终止符

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

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


另外,请避免使用
gets
而改用
fgets
。C11的边界检查接口通常不受支持,但这个特定函数只是使用过时的
gets

重写旧代码时的占位符。谢谢!我会再试一次!如果你有时间,你能告诉我如何保存另一个mem吗ory location?只需重复[i]=另一个位置[j]就可以了?我也不喜欢
\u s
函数,但如果你告诉某人使用
fgets
,你还必须教他们如何删除换行符。(对你和他们来说都是一个不幸的麻烦。)@SteveSummit不仅是我,而且C11附录K明确建议我们不要使用该功能。至于fgets教程,请随意加入该社区wiki常见问题解答:感谢链接。不过,最近我看到越来越多的提问者使用了
\s
功能,因此有人正在了解他们……:-(@SteveSummit Microsoft鼓吹这些
\u s
功能已经有20多年了。其中一个问题是,它们与C11附录K“边界检查接口”(这是一个相当大的失败)不完全兼容。
#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])