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