Как добавить строку в массив строк в 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