Я пытаюсь создать программу, которая принимает заданное количество строк (пользователя просят ввести количество строк, которые они будут вводить), после того, как у него есть эти строки, они помещаются в массив, используядинамическая память.
Результат будет примерно таким:
# of Strings: 3
Cat
Dog
Elephant
Cat
Dog
Elephant
Вот фрагмент моего кода после того, как у меня будет количество строк.
sptr=malloc(sizeof(char*)*nStrings);
for(i=0;i<nStrings;i++)
{
scanf("%s",string);
length=strlen(string);
sptr[i]=malloc(sizeof(char)*length);
sptr[i]=string;
}
Где sptr - массив, к которому я получу доступ для вывода строк.Так что это массив указателей, которые затем указывают на отдельные строки (или другие массивы символов, если вы предпочитаете так думать).
Допустим, есть две строки.Я выделяю память для двух указателей. Затем в первом указателе я сканирую строку, я нахожу длину строки, я выделяю памяти размер строки и равняю указатель на строку.Все это прекрасно работает, и если бы я поместил printf () сразу после этой последней строки, это сработало бы.Проблема, с которой я сталкиваюсь, состоит в том, что если, скажем, есть 3 строки, каждый раз, когда через sptr [i] назначается правильно, но тогда за пределами этого блока все признаки sptr равны = последней строке, которую я вставил,понятия не имею почему.
Если бы вы могли мне помочь, я был бы признателен.Спасибо.