как выделить память для массива строк empy - PullRequest
0 голосов
/ 01 декабря 2018

я получил пустой строковый массив размером 1 (автоматически 1, я действительно не знаю почему)

я хочу назначить размер 10 для этого пустого строкового массива, но я не знаю, как?

пока это мой код

char empty_string_array[] = "";

printf("Enter some strings: eg. asdfjklo...: ");
scanf("%s", &empty_string_array[0]);

int len_of_string = strlen(empty_string_array);
printf("%d\n", len_of_string);

Ввод: введите несколько строк ...: a Ввод: текущая длина строки: 1

restart Ввод: введитенекоторые строки ....: ab * Обнаружено разрушение стека * Прервано (сброшено ядро)

Полагаю, это означает, что памяти не назначено более одной строки, кроме той, что тамуже

я знаю, что мог бы использовать: char empty_string_array [11] = "";для 10 строк и \ 0 ,, но это не лучшее решение

1 Ответ

0 голосов
/ 01 декабря 2018

Так как вы должны использовать malloc(), тогда

char *empty_string_array = (char *)malloc(sizeof(char) * 10 + 1);
//casting from (void *) is not really necessary, though    

printf("Enter some strings: eg. asdfjklo...: ");
scanf("10%s", empty_string_array);

int len_of_string = strlen(empty_string_array);
*(empty_string_array+len_of_string) = '\0';
//or: empty_string_array[len_of_string] = '\0';  your pick
printf("%d\n", len_of_string);
...