Я не могу понять код профессора о malloc - PullRequest
0 голосов
/ 18 октября 2019

Профессор дает мне домашнее задание о malloc, динамическом распределении памяти ... Итак, он дает мне несколько советов по поводу кода, но я не могу понять его код и подсказки. Я думаю, что мой код нуждается в другом 'def' или 'for loop' ... В любом случае.

question Теперь я могу получить некоторую строку с указателем. но я не могу строить. Печатайте как чужой язык ... последняя часть этой страницы, я надеюсь, этот код будет работать. for (j = 0; j <3; j ++) printf ("ваше предложение% s", * parray [i]) </p>

Я пробовал некоторые из кодов с друзьями. он также не может понять ... Профессор сказал мне, что этот код для новичка, "IT легко решить"

#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 Ответ

1 голос
/ 18 октября 2019

Вы должны выделить количество символов во входной строке, +1 для нулевого терминатора.

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

Затем скопируйте данные из временного str вновое место в памяти.

Также избегайте gets_s и используйте вместо него fgets. Интерфейс проверки границ C11 в целом плохо поддерживается, но эта конкретная функция была просто некоторой заменой при переписывании старого кода с использованием устаревших gets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...