Как остановить поток данных - C (СИ)
Формулировка задачи:
Всем привет!
Нужно записать поток данных введенных с клавиатуры в массив.
Получилось так:
Подскажите пожалуйста как остановить поток данных путем нажатия клавиши ENTER?
Нужно реализовать с помощью scanf().
#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; }
Решение задачи: «Как остановить поток данных»
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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
<stdio.h>
и<locale.h>
. - Определение константы
SIZE
равной 255. - Объявление переменных:
ch
типаchar
иx
типаint
. - Установка русской локали с помощью функции
setlocale()
. - Вывод сообщения с просьбой ввести фразу.
- Инициализация переменной
x
равной 0. - Запуск цикла, который будет выполняться до тех пор, пока:
x
меньшеSIZE-1
(для избежания выхода за границы массива).scanf()
успешно считывает символ (для избежания ошибок ввода).- считанный символ не является символом новой строки ('\n').
- Внутри цикла увеличиваем значение
x
на 1. - После выхода из цикла добавляем в конец строки символ конца строки ('\0').
- Вывод сообщения и копирование введенной строки в выходной поток.
- Для вывода каждого символа строки используется цикл, который будет выполняться до тех пор, пока:
ch[x]
не равно\0
(для избежания выхода за границы массива).
- Внутри цикла выводим текущий символ.
- В конце программы добавлено
getchar()
, чтобы программа не закрылась сразу после вывода введенной строки. - Конец программы:
return 0
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д