Pgm ncurses read fic

Exemple de programme ncurses

  • Premier ecran en mode texte avec affichage du contenu d'un fichier dans un second ecran

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curses.h>

void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);

int main()
{
    FILE *fp;
    int ch, prev, i, row, col, y, x;
char regle1[]="        10        20        30        40        50        60        70        80        90        100   ";
char regle2[]="----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----";

    fp = fopen("./test.txt", "r");
    if(fp == NULL)
    {   perror("Cannot open input file");
        exit(1);
    }

initscr();                             /* start the curses mode */
   noecho();   /*  désactive l'affichage sur l'écran d'une touche frappée au clavier */
   cbreak();   /*  rend immédiatement disponible le caractère saisi */
   curs_set(0);

   getmaxyx(stdscr,row,col);              /* get the number of rows and columns */

   box(stdscr,0,0);
   mvwprintw(stdscr,2,1,"%s",regle1);
   mvwprintw(stdscr,3,1,"%s",regle2);
   refresh(); 
   getch();

WINDOW *fntr=newwin(20,80,5,10); /* new win 10 sur 50 a la ligne 10 colonne 10 */
 if (!fntr) { 
     printw("ERROR with newwin\n." );
     refresh();
     getch();
   }
 box(fntr,0,0);  /* permet de tracer des lignes, des cadres ASC_VLINE ASC_HLINE*/
 print_in_middle(fntr, 1, 0, 50, "Mon Menu");
 mvwaddch(fntr, 2, 0, ACS_LTEE);
 mvwhline(fntr, 2, 1, ACS_HLINE, 78);
 mvwaddch(fntr, 2, 79, ACS_RTEE);
 mvwprintw(stdscr,LINES - 2, 1,"%s", "F3 to exit");
 wrefresh(fntr);

getyx(fntr,y,x);
  /* getbegyx(win, starty, startx); */
  getmaxyx(fntr, row, col);
  row--;
  wattron(fntr,A_BOLD);
  while((ch = fgetc(fp)) != EOF )
    {   
       x++;
       if ( ch == '\n' ) 
           { y++; x=0; move(y,x);}
       else
           { if ( y < row ) mvwaddch(fntr,y,x, ch);}
       wrefresh(fntr);
    }
   wattroff(fntr,A_BOLD);        /* Switch it off once we got *


/* FIN */
getch();
delwin(fntr);
endwin();
close(fp);
return 0;
}

void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
{	int length, x, y;
	float temp;

	if(win == NULL)
		win = stdscr;
	getyx(win, y, x);
	if(startx != 0)
		x = startx;
	if(starty != 0)
		y = starty;
	if(width == 0)
		width = 80;

	length = strlen(string);
	temp = (width - length)/ 2;
	x = startx + (int)temp;
	mvwprintw(win, y, x, "%s", string);
	refresh();
}

Previous page: Pgm Long Fic
Page suivante : Pgm read write