Здравствуйте, я практикую C, и у меня есть небольшая проблема со следующим кодом. Прежде всего, моя программа просто читает ввод от пользователя и, если есть доступная память, сохраняет ее, в противном случае она ничего не делает.
У меня есть массив указателей на char, называемый "lines", и массив символов для временного хранения ввода, называемого "line".
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXWIDTH 81
#define MAXLINES 100
int main ()
{
char* lines [MAXLINES];
char line[MAXWIDTH];
int i ;
int n ;
Затем я проверю, есть ли в моем массиве указателей место, и входные данные отличны от нуля. Я делаю это в цикле for, чтобы заполнить массив, и обычно цикл for должен останавливаться, когда я ничего не печатаю и просто нажимаю ввод или когда массив заполнен.
Если есть место, я проверю, достаточно ли памяти в пространстве, на которое указывает указатель. Если все в порядке (! = NULL), программа копирует данные из get (line) в память.
for (n = 0; n < MAXLINES && gets(line) != NULL; n++)
{
if ((lines[n] = malloc(strlen(line) + 1)) == NULL)
exit (1);
strcpy(lines[n], line);
}
Остальная часть кода предназначена только для вывода и освобождения памяти.
for (i = 0; i < n; i++)
{
puts(lines[n-i-1]);
free(lines[n-i-1]);
}
return 0;
}
Теперь проблема в том, что программа работает без ошибок, но она работает не так, как я хочу.
Это просто выполнение бесконечного цикла, где я могу печатать столько, сколько захочу, что я хочу, без какой-либо реакции.