教授给我做一个关于malloc的作业,动态记忆分配... 所以他给了我一些关于代码的提示,但我无法理解他的代码和提示。 我认为我的代码需要另一个"def"或"for 循环"...... 无论如何。
问题现在我可以gets_s一些带有指针的字符串。 但我无法构建。 像外星语言一样打印... 本页的最后一页我希望这段代码能正常工作。 对于 (j=0;J<3;j++( printf("your sentence is %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 表示空终止符。
parray[i] = malloc(strlen(str)+1);
然后将数据从临时str
复制到新的内存位置。
也避免gets_s
,改用fgets
。C11 的边界检查接口通常支持得很差,但这个特定的功能在使用过时的gets
重写旧代码时只是一些占位符。