Вводить и выводить строку пока не будет нажат 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с консолью и памятью.
  2. Определение значения ENTER, которое будет использоваться для проверки нажатия клавиши Enter.
  3. Объявление переменных: a - указатель на строку, x - символ, nCell - количество заполненных ячеек в строке.
  4. Вывод сообщения с просьбой ввести строку.
  5. Выделение памяти под строку, размером в 1 символ.
  6. Проверка на отсутствие ошибки при выделении памяти. При наличии ошибки выводится сообщение об ошибке и программа завершается.
  7. Ввод символов в строку до тех пор, пока не будет нажат Enter.
  8. При каждом вводе символа, строка realloc-ируется, чтобы увеличить её размер на 1 символ.
  9. Введенный символ сохраняется в массиве.
  10. Увеличивается счётчик заполненных ячеек.
  11. После ввода всех символов, выводится введённая строка.
  12. Выделяемая память освобождается.
  13. Программа ожидает нажатия любой клавиши перед завершением работы.
  14. Возвращается 0, что означает успешное завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5
Похожие ответы