Как добавить строку в массив строк в C
Итак, я снова знакомлюсь с C, и эта концепция меня особенно зацепила.
цель состоит в том, чтобы создать динамически выделенный массив строк. Я сделал это, сначала создав нулевой массив и выделив соответствующий объем пространства для каждой введенной строки. Единственная проблема в том, что когда я пытаюсь добавить строку, я получаю ошибку seg! Я не могу понять, почему, у меня есть предчувствие, что это от неправильного распределения, поскольку я не вижу ничего плохого в моем strcpy функция.
я исчерпывающе посмотрел на этом сайте для ответа, и я нашел помощь, но не могу совсем закрыть сделку. Любую помощь вы можете предоставить будет принята с благодарностью!
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int count = 0; //array index counter
char *word; //current word
char **array = NULL;
char *term = "q"; //termination character
char *prnt = "print";
while (strcmp(term, word) != 0)
{
printf("Enter a string. Enter q to end. Enter print to print arrayn");
// fgets(word, sizeof(word), stdin); adds a newline character to the word. wont work in this case
scanf("%s", word);
//printf("word: %snterm: %sn",word, term);
if (strcmp(term, word) == 0)
{
printf("Terminaten");
}
else if (strcmp(prnt, word) == 0)
{
printf("Enumeraten");
int i;
for (i=0; i<count; i++)
{
printf("Slot %d: %sn",i, array[i]);
}
}
else
{
printf("String added to arrayn");
count++;
array = (char**)realloc(array, (count+1)*sizeof(*array));
array[count-1] = (char*)malloc(sizeof(word));
strcpy(array[count-1], word);
}
}
return ;
}
1 ответов
word
не имеет выделенной памяти. Ваша программа в ее текущем виде топчет нераспределенную память, когда пользователи вводят слова в вашу программу.
вы должны угадать, насколько велик ваш вход и выделить входной буфер следующим образом:
char word[80]; // for 80 char max input per entry