Autor Téma: Vstup v C pod Curses  (Přečteno 3268 krát)

Offline jimi

  • Začátečník
  • **
  • Příspěvků: 16
    • Zobrazit profil
    • Jimiho blog
Vstup v C pod Curses
« kdy: 15. 08. 2009, 21:05:47 »
Dobrý den,

 už pěknou dobu dělám vlastní textový editor (asi od května tohoto roku), za tu dobu jsem vyzkoušel bezpočet možností jak ho nejlépe napsat. Jako nejlepší řešení se mi jevý psát editor pod knihovnou Curses. Ale v ní programuji tak 20 dní. Zkoušel jsem načítat znaky z klávesnice pomocí funkce Getch, ale ta mi nebere diakritiku (ěšč apod.) a ani, mám takový pocit, nenahrává data do souboru jako Putc(). Proto bych chtěl poprosit o název takové funkce, která tyto dva problémy řeší. Funkce Getstr() mi sice diakritiku rozlouská, ale já chci použít int a ne char :-) a navíc také mám takové tušení neukládá do souboru. Budu zavázán všem, kteří mi poradí  :)

Ještě sem skopčim již napsaný kód, ale určitě neni zrovna dle Standardů, v C programuji od vánoc 2008  :)
Kód: [Vybrat]
// JimText Ed v. 0.0.1
// Start 4. 8. 2009 - end 15. 8. 2009
// Author Miroslav 'jimi' Bahenský <jimisek@gmail.com>
// License GPL 3
// Rožmitál p. Tř.

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

#define MAX_NAME_FILE 1024 * 1024 // maximální velikost názvu souboru

FILE *file;

int main()
  {
    char *file_name;
  file_name = (char *) malloc (MAX_NAME_FILE);
    int key;

// Začátek Grafické čášti
initscr();

// První řádka s názvem editoru + číslo verze
move(0, COLS-23);
attron(A_BOLD);
printw("%s", "JimText Ed verze 0.0.1");
attroff(A_BOLD);
refresh();
sleep(0);

// Zažádání o název souboru
move(1, 2);
attron(A_REVERSE);
printw("%s", "Zadejte název programu: ");
getstr(file_name);
attroff(A_REVERSE);
refresh();
sleep(0);

// Zjištění, jestli soubor existuje
if ((file = fopen(file_name, "r")) == NULL)
          {

// Jestli soubor neexistuje, začneme psát nový
   file = fopen(file_name, "w");

            /*while ((key = getchar()) != 27)
                {
                putc (key, file);
                }*/

   fclose(file);
           move(2, 1);
           refresh();
           sleep(1);
   
          }
           else
          {
// Jestli existuje, je tu možnost editace
   file = fopen(file_name, "r+");


   fclose(file);
           refresh();
   sleep(5);
          }


free(file_name); // Uvolnění paměti v názvu souboru

endwin();
// Konec Grafické části

exit(EXIT_SUCCESS);
  }
Toho bohdá nebude, aby český linuxák z boje utíkal...