Я беру переменное количество строк строки, используя fgets.Конец каждой строки отмечен новой строкой.Я пытаюсь выделить массив строк (используя malloc).Каждый индекс массива будет указывать на каждую строку текста, который вводится пользователем.Это было действительно сложно объяснить, поэтому вот пример:
Используя fgets и malloc, разрешите пользователю вводить несколько строк строк.Пользователь будет сигнализировать конец строк с помощью «.»на новой строке.Каждая строка из нескольких строк будет храниться в виде строки в динамически распределенном массиве.Выходные данные программы должны печатать каждую строку в обратном порядке.
Пример: введите строку: (это ввод сэмпла)
The sky is blue
The grass is green
I love life
.
(это должен быть вывод)
I love life
The grass is green
The sky is blue
Пока у меня есть это:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char charsOnLine[1000];
char **poem;
int i;
int j;
fgets(charsOnLine, 1000, stdin); //runs only once
while (charsOnLine[0] != '.')
{
poem = malloc(sizeof(char*) * 3);
for(j = 0; j < strlen(charsOnLine); j++)
{
poem[j] = malloc(sizeof(strlen(charsOnLine)));
strcpy(poem[j], charsOnLine);
}
fgets(charsOnLine, 1000, stdin);
}
for (j = 0; j < strlen(*poem); j++) //test to print each line of the poem (not in reverse)
{
printf("%s\n",poem[j]);
}
return 0;
}
Я только что начал с двойных указателей, указателей, динамического выделения памяти, fgets (), и объединение их всех вместе доставляет мне некоторые проблемы.
В моем коде я тестирую, чтобы увидеть, будет ли он печатать каждую строку. Я ввожу так же, как и я, но печатает последнюю введенную строку 4 раза вместо каждой отдельной строки.
Как только я выясню, как печатать каждую введенную строку, я пойму, как напечатать их назад.