Вводить и выводить строку пока не будет нажат Enter - C (СИ)
Формулировка задачи:
здраствуйте
прога написана на С
прога должна вводить и выводить строку пока не нажмется ентер
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <conio.h> #include <string.h> int main() { char *a,*b,x; int i=0,j,n; printf("put str:\n"); x=getch(); printf("%c",x); a=(char *)malloc(1*sizeof(char)); a[0]=x; b=(char *)malloc(1*sizeof(char)); b[0]=a[0]; while(x!=13) {x=getch(); printf("%c",x); i++; realloc(a,i); for(j=0;j<i-1;j++) {a[j]=b[j]; } a[i]=x; realloc(b,i); for(j=0;j<i;j++) { b[j]=a[j]; } } printf("\n\n\n\n\n"); for(j=0;j<i;j++) printf("%c",a[j]); free(a); free(b); printf("\n"); system("pause"); return 0; }
Решение задачи: «Вводить и выводить строку пока не будет нажат Enter»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <conio.h> #define ENTER 13 int main() { char *a,x; int nCell=0; printf("put str:\n"); a=(char *)malloc(sizeof(char)); if (a==NULL) { printf("Memory error"); system("pause"); return 1; } while((x=getch())!=ENTER) { printf("%c",x); realloc(a,(nCell+1)*sizeof(char)); a[nCell]=x; ++nCell; } printf("\n"); for(int i=0; i<nCell; i++ ) printf("%c",a[i]); printf("\n\n\n\n\n"); free(a); system("pause"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и памятью.
- Определение значения ENTER, которое будет использоваться для проверки нажатия клавиши Enter.
- Объявление переменных: a - указатель на строку, x - символ, nCell - количество заполненных ячеек в строке.
- Вывод сообщения с просьбой ввести строку.
- Выделение памяти под строку, размером в 1 символ.
- Проверка на отсутствие ошибки при выделении памяти. При наличии ошибки выводится сообщение об ошибке и программа завершается.
- Ввод символов в строку до тех пор, пока не будет нажат Enter.
- При каждом вводе символа, строка realloc-ируется, чтобы увеличить её размер на 1 символ.
- Введенный символ сохраняется в массиве.
- Увеличивается счётчик заполненных ячеек.
- После ввода всех символов, выводится введённая строка.
- Выделяемая память освобождается.
- Программа ожидает нажатия любой клавиши перед завершением работы.
- Возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д