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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#define SIZE 255
int main()
{
    char ch[SIZE];
    int x;
 
    setlocale(LC_ALL, "Russian");
    printf("Введите фразу: ");
    x = 0;
    while(x < SIZE-1 && scanf("%c", &ch[x]) && ch[x]!='\n')
    {
        ++x;
    }
    ch[x] = '\0';
    printf("\n");
    printf("Вы ввели фразу: ");
    for (x=0; ch[x]!='\0'; ++x)
    {
        printf("%c", ch[x]);     
    }
    getchar();
 
    return 0;
}

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

  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
Похожие ответы