Ĺadny brzuch
Przykładowy kod z tutoriala
#include <ncurses.h> #include <stdlib.h> int main(int argc, char *argv[]) { int ch, prev, row, col; prev = EOF; FILE *fp; int y, x; if(argc != 2) { printf("Usage: %s <a c file name>\n", argv[0]); exit(1); } fp = fopen(argv[1], "r"); if(fp == NULL) { perror("Cannot open input file"); exit(1); } initscr(); getmaxyx(stdscr, row, col); while((ch = fgetc(fp)) != EOF) { getyx(stdscr, y, x); /* if(y == (row - 1)) { printw("<-Press Any Key->"); /// refresh(); getch(); clear(); move(0, 0); } */ if(prev == '/' && ch == '*') { attron(A_BOLD); getyx(stdscr, y, x); move(y, x - 1); printw("%c%c", '/', ch); } else printw("%c", ch); refresh(); if(prev == '*' && ch == '/') attroff(A_BOLD); prev = ch; } refresh(); getch(); endwin(); fclose(fp); return 0; }
Działa to na zasadzie konsolowego cat w linuksie. Tyle tylko, że jest to ograniczone rozmiarami okna konsoli. Jak możnaby to przerobić, że w chwili, gdy okno to się skończy zostało ono przewinięte w dół? Doskonałym przykładem czegoś takiego jest program more z konsoli, ale jeszcze się nie zmusiłem to kopania w jego źródłach ;) Jeżeli nic ciekawego w tutorialu nie znajde na ten temat (i żadnych rad na forum nie uzyskam ;) ), to poszukam te żródła na googlu, chociaż domyślam się, że nieopisanie trudno będzie mi je znaleźć, skoro mają taką niespotykaną i unikalną nazwę ;) Mimowszystko prosze o jakieś rady.
Użytkownik lszk edytował ten post 15 lipiec 2006, 00:55
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
#include <ncurses.h> #include <stdlib.h> int main(int argc, char *argv[]) { int ch, prev, row, col; prev = EOF; FILE *fp; int y, x; if(argc != 2) { printf("Usage: %s <a c file name>\n", argv[0]); exit(1); } fp = fopen(argv[1], "r"); if(fp == NULL) { perror("Cannot open input file"); exit(1); } initscr(); getmaxyx(stdscr, row, col); while((ch = fgetc(fp)) != EOF) { getyx(stdscr, y, x); /* if(y == (row - 1)) { printw("<-Press Any Key->"); /// refresh(); getch(); clear(); move(0, 0); } */ if(prev == '/' && ch == '*') { attron(A_BOLD); getyx(stdscr, y, x); move(y, x - 1); printw("%c%c", '/', ch); } else printw("%c", ch); refresh(); if(prev == '*' && ch == '/') attroff(A_BOLD); prev = ch; } refresh(); getch(); endwin(); fclose(fp); return 0; }
Działa to na zasadzie konsolowego cat w linuksie. Tyle tylko, że jest to ograniczone rozmiarami okna konsoli. Jak możnaby to przerobić, że w chwili, gdy okno to się skończy zostało ono przewinięte w dół? Doskonałym przykładem czegoś takiego jest program more z konsoli, ale jeszcze się nie zmusiłem to kopania w jego źródłach ;) Jeżeli nic ciekawego w tutorialu nie znajde na ten temat (i żadnych rad na forum nie uzyskam ;) ), to poszukam te żródła na googlu, chociaż domyślam się, że nieopisanie trudno będzie mi je znaleźć, skoro mają taką niespotykaną i unikalną nazwę ;) Mimowszystko prosze o jakieś rady.
Użytkownik lszk edytował ten post 15 lipiec 2006, 00:55