Автор Гілка: Мова сі. Вивід в консоль  (Прочитано 4442 раз)

Відсутній illia

  • Новачок
  • *
  • дописів: 33
  • Карма: +0/-0
  • користувач linux з 2007 року
Не знаю, як написати консольну програмку, що час від часу передруковує виведений текст (у тексті декілька рядків).
Чи можна позбутися буферизації виводу щоб не застосовувати кожен раз fflush(stdout)?

#include <stdio.h>

main()
{
  printf("Декілька рядків тексту");
  fflush(stdout);
  sleep(5);
  printf("Нові рядки тексту на місті попереднього");
}

Відсутній ReAl

  • Новачок
  • *
  • дописів: 21
  • Карма: +0/-0
Re: Мова сі. Вивід в консоль
« Відповідей #1 : 2011-12-02 22:35:25 »
Прибрати буферизацію зовсім (_IONBF) або, якщо порції тексту завжди супроводжуються '\n', ввімкунти буферизацію рядків (_IOLBF).
#include <stdio.h>

main()
{
  setvbuf(stdout, 0, _IONBF, 0);

  printf("Декілька рядків тексту");
  sleep(5);
  printf("Нові рядки тексту на місті попереднього");
}
Щоб буферизація була вимкнена лише при виводі в консоль, а при перенаправленні у файл залишалася:
   if (isatty(fileno(stdout)))
        setvbuf(stdout, 0, _IONBF, 0);

p.s. Тільки рядки ж не на місці попередніх будуть, а як продовження друкуватимуться.
Вивести простим способом на місце попереднього можна лише один рядок, даючи в кінці попереднього або на початку нового '\r'
« Змінено: 2011-12-02 22:41:52 від ReAl »
Самотнє сонце
пригортає тигра та
пестить метелика.

Відсутній illia

  • Новачок
  • *
  • дописів: 33
  • Карма: +0/-0
  • користувач linux з 2007 року
Re: Мова сі. Вивід в консоль
« Відповідей #2 : 2011-12-03 13:00:00 »
Як тоді реалізований вивід подібний до vi man top та інших?
Підкажіть, будь ласка що шукати.

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Мова сі. Вивід в консоль
« Відповідей #3 : 2011-12-03 18:55:40 »
Підкажіть, будь ласка що шукати.
ncurses

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Мова сі. Вивід в консоль
« Відповідей #4 : 2011-12-03 22:58:10 »
Підкажіть, будь ласка що шукати.
ncurses

Цей туторіал напевно простіший буде:

http://www.paulgriffiths.net/program/c/curses.php
[Fedora Linux]

Відсутній Yury_Bulka

  • Графоман
  • ****
  • дописів: 440
  • Карма: +0/-0
  • муз́ика
Re: Мова сі. Вивід в консоль
« Відповідей #5 : 2011-12-03 23:22:42 »
man echo
...
    \r     carriage return
...
http://freeUser.org.ua/ — колективний досвід із застосування вільних програм

Відсутній illia

  • Новачок
  • *
  • дописів: 33
  • Карма: +0/-0
  • користувач linux з 2007 року
Re: Мова сі. Вивід в консоль
« Відповідей #6 : 2011-12-04 09:05:03 »
Думаю, що ncurses підійде.
Дякую всім хто відповів.

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
Re: Мова сі. Вивід в консоль
« Відповідей #7 : 2011-12-04 14:33:25 »
Ось ще декілька перекладів документації ncurses:

http://void.net.ua/wiki/doku.php/projects:libraries#ncurses
Сторінки man