教授给我有关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])
您应该分配输入字符串中的字符数量,空终止符为+1。
parray[i] = malloc(strlen(str)+1);
然后将数据从临时str
复制到新的存储位置。
也请避免使用gets_s
,而改用fgets
。通常,对C11的边界检查接口的支持很少,但是当使用过时的gets
重写旧代码时,此特定功能只是占位符。