Сделать перенос строки при вводе определенного символа - C (СИ)
Формулировка задачи:
Собственно, проблема. Нужно чтобы при вводе определённого количества символов пользователем происходил перенос на следующую строку.
Решение задачи: «Сделать перенос строки при вводе определенного символа»
textual
Листинг программы
#include <stdio.h>
#include <termios.h>
static struct termios old, new;
void initTermios(int echo)
{
tcgetattr(0, &old);
new = old;
new.c_lflag &= ~ICANON;
new.c_lflag &= echo ? ECHO : ~ECHO;
tcsetattr(0, TCSANOW, &new);
}
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &old);
}
char getch_(int echo)
{
char ch;
initTermios(echo);
ch = getchar();
printf("%c",ch);
resetTermios();
return ch;
}
char getch(void)
{
return getch_(0);
}
char getche(void)
{
return getch_(1);
}
void func(int num) {
int i;
char ch;
i=0;
do {
ch=getch();
i++;
if(i==num) {
printf("\n");
i=0;
}
} while (ch!='\n');
}
int main(void) {
func(5);
return 0;
}
Объяснение кода листинга программы
- Переменные
oldиnewобъявлены как структураtermios. - Функция
initTermiosинициализирует терминал, устанавливая его параметры. - Функция
resetTermiosвосстанавливает исходные параметры терминала. - Функция
getchполучает символ от пользователя, используя измененные параметры терминала. - Функция
getcheтакже получает символ от пользователя, но без изменения параметров терминала. - В функции
funcпользователь вводит символы до тех пор, пока не введет символ новой строки (\n). - Если количество введенных символов равно
num, то выводится символ новой строки. - В функции
mainвызывается функцияfuncс аргументом5, что означает, что будет введено 5 символов, после чего будет выведена новая строка. - Программа завершается возвратом значения
0.