
		Cr4sh_Dump
		
		(usa Debian)
		
		Enviado em 09/12/2012 - 20:06h 
		Obrigado consegui entender a logica do que voce falo mais não sei como implementar isso sera que se eu postar o codigo voce possa me ajudar vou le mostrar como ta meu codigo ate agora.
#include <stdio.h>
#include <curses.h>
#define CTRL(c) ((c) & 037)
/*Variavel gobal para definir a posição do cursor com cordenada x, y*/
int row, col;
int main(int argc,char **argv)
{
   extern void perror(), exit();
   int i, n, l;
   int c;
   int line = 0;
   FILE *fd;
   if (argc != 2)
   {
       fprintf(stderr, "Usage: %s file\n", argv[0]);
       exit(1);
   }
   fd = fopen(argv[1], "r");
   if (fd == NULL)
   {
       perror(argv[1]);
       exit(2);
   }
   initscr();
   cbreak();
   nonl();
   noecho();
   idlok(stdscr, TRUE);
   keypad(stdscr, TRUE);
   /* Ler de dentro do arquivo */
   while ((c = getc(fd)) != EOF)
   {
       if (c == '\n')
           line++;
       if (line > LINES - 2)
           break;
       addch(c);
   }
   fclose(fd);
   move(0,0);
   refresh();
   edit();
   /* Escrever no arquivo */
   fd = fopen(argv[1], "w");
   for (l = 0; l < LINES - 1; l++)
   {
       n = len(l);
       for (i = 0; i < n; i++)
           putc(mvinch(l, i) & A_CHARTEXT, fd);
       putc('\n', fd);
   }
   fclose(fd);
   endwin();
   return 0;
}
len(int lineno)
{
   int linelen = COLS - 1;
   while (linelen >= 0 && mvinch(lineno, linelen) == ' ')
       linelen--;
   return linelen + 1;
}
edit()
{
   int c;
   while(1)
   {
       move(row, col);
       refresh();
       c = getch();
       /* comandos do editor */
       switch (c)
       {
       /* move o cursor nos quatro sentidos */
       case 'h':
       case KEY_LEFT:
           if (col > 0)
               col--;
           else
               flash();
           break;
       case 'j':
       case KEY_DOWN:
           if (row < LINES - 1)
               row++;
           else
               flash();
           break;
       case 'k':
       case KEY_UP:
           if (row > 0)
               row--;
           else
               flash();
           break;
       case 'l':
       case KEY_RIGHT:
           if (col < COLS - 1)
               col++;
           else
               flash();
           break;
       /* i:entra em modo de entrada*/
       case KEY_IC:
       case 'i':
           input();
           break;
       /* x: deleta um carater */
       case KEY_DC:
       case 'x':
           delch();
           break;
       /* o: cria uma nova linha e entra em modo de entrada */
       case KEY_IL:
       case 'o':
           move(++row, col = 0);
           insertln();
           input();
           break;
       /* d: deleta uma linha */
       case KEY_DL:
       case 'd':
           deleteln();
           break;
       /* ^L: redesenha a tela */
       case KEY_CLEAR:
       case CTRL('L'):
           wrefresh(curscr);
           break;
       /* w: salva e sai */
       case 'w':
           return;
       /* q: sai sem salvar */
       case 'q':
           endwin();
           exit(2);
       default:
           flash();
           break;
       }
   }
}
/*
* modo de entrada aceita comando e pode sair dele com ^D or EIC
*/
input()
{
   int c;
   standout();
   mvaddstr(LINES - 1, COLS - 20, "INPUT MODE");
   standend();
   move(row, col);
   refresh();
   for (;;)
   {
       c = getch();
       if (c == CTRL('D') || c == KEY_EIC)
           break;
       insch(c);
       move(row, ++col);
       refresh();
   }
   move(LINES - 1, COLS - 20);
   clrtoeol();
   move(row, col);
   refresh();
}
Acredito que me dando mais uma força vou conseguir :)