Как остановить поток данных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Нужно записать поток данных введенных с клавиатуры в массив. Получилось так:
Листинг программы
  1. #include <stdio.h>
  2. #define SIZE 255
  3. int main(void)
  4. {
  5. char ch[SIZE];
  6. int x;
  7. printf("Введите фразу: ");
  8. for (x=0; x < SIZE; ++x)
  9. scanf("%c", &ch[x]);
  10. printf("\n");
  11. printf("Вы ввели фразу: ");
  12. for (x=0; x < SIZE; ++x)
  13. printf("%c", ch[x]);
  14. return 0;
  15. }
Подскажите пожалуйста как остановить поток данных путем нажатия клавиши ENTER? Нужно реализовать с помощью scanf().

Решение задачи: «Как остановить поток данных»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #define SIZE 255
  4. int main()
  5. {
  6.     char ch[SIZE];
  7.     int x;
  8.  
  9.     setlocale(LC_ALL, "Russian");
  10.     printf("Введите фразу: ");
  11.     x = 0;
  12.     while(x < SIZE-1 && scanf("%c", &ch[x]) && ch[x]!='\n')
  13.     {
  14.         ++x;
  15.     }
  16.     ch[x] = '\0';
  17.     printf("\n");
  18.     printf("Вы ввели фразу: ");
  19.     for (x=0; ch[x]!='\0'; ++x)
  20.     {
  21.         printf("%c", ch[x]);    
  22.     }
  23.     getchar();
  24.  
  25.     return 0;
  26. }

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

  1. Подключение необходимых библиотек: <stdio.h> и <locale.h>.
  2. Определение константы SIZE равной 255.
  3. Объявление переменных: ch типа char и x типа int.
  4. Установка русской локали с помощью функции setlocale().
  5. Вывод сообщения с просьбой ввести фразу.
  6. Инициализация переменной x равной 0.
  7. Запуск цикла, который будет выполняться до тех пор, пока:
    • x меньше SIZE-1 (для избежания выхода за границы массива).
    • scanf() успешно считывает символ (для избежания ошибок ввода).
    • считанный символ не является символом новой строки ('\n').
  8. Внутри цикла увеличиваем значение x на 1.
  9. После выхода из цикла добавляем в конец строки символ конца строки ('\0').
  10. Вывод сообщения и копирование введенной строки в выходной поток.
  11. Для вывода каждого символа строки используется цикл, который будет выполняться до тех пор, пока:
    • ch[x] не равно \0 (для избежания выхода за границы массива).
  12. Внутри цикла выводим текущий символ.
  13. В конце программы добавлено getchar(), чтобы программа не закрылась сразу после вывода введенной строки.
  14. Конец программы: return 0.

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы