Прекратить запись в динамический массив по нажатию Enter - C (СИ)
Формулировка задачи:
Привет всем !!!! пытаюсь разобраться с работой с памятью, на примере создания динамического массива и вывода его на экран (пока пользователь вводит что нибудь программа считывает строку в массив ,как только пользователь ничего не вводит и жмет Enter считывание строк прекращается) вот мой код
Заранее всем спасибо!!!!
#include <stdio.h> #include <stdlib.h> #define MAXLEN 20 int main() { char **string; int i,j; char buffer[20] = {0}; char buff[20]; unsigned min; int count = 0; string=(char**)malloc(1*sizeof(char*)); while (fgets(buffer, sizeof(buffer), stdin) && (buffer[0] != '\n')) { string[count]=(char*)malloc(MAXLEN*sizeof(char)); string[count] = buffer; printf("%s",string[count]); string=(char**)malloc(1*sizeof(char*)); count++; } for (i = 0; i < (count - 1); ++i) { printf("%s",string[i]); } return 0; }
Решение задачи: «Прекратить запись в динамический массив по нажатию Enter»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> int main(void) { char *str = (char*)malloc(sizeof(char)); char *ptr = str; int chr; printf("Введите строку: "); chr = getchar(); while (chr != '\n') { *ptr = (char)chr; str = (char*)realloc(str, ptr-str+sizeof(char)*2); ++ptr; chr = getchar(); } *ptr = '\0'; puts (str); free (str); return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается динамический массив (строка) на 1 символ с помощью malloc.
- Вводится строка с помощью функции getchar, которая считывает ввод посимвольно.
- Пока вводимая строка не закончится (до нажатия Enter), выполняется следующее:
- Каждый символ вводится в динамический массив.
- Динамический массив увеличивается в размере с помощью realloc.
- Указатель на следующий элемент в динамическом массиве увеличивается.
- После ввода строки, последний символ устанавливается в '\0' для обозначения конца строки.
- Введенная строка выводится с помощью функции puts.
- Динамический массив освобождается с помощью функции free.
- Программа возвращает 0, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д