Gå til innhold

Lage kommandovindu basert editor (C)


Anbefalte innlegg

Hei. Jeg har nå drevet på C en liten stund og lurer litt på om jeg skal bevege meg litt videre med å begynne på et "større" prosjekt. Det jeg da tenkte var å lage en tekst-editor som brukes via terminal (i Linux), akkurat som f.eks. nano, vim ol, bare mye enklere.

 

Det første jeg føler jeg må adressere er hvordan terminalen kan bli som en teksteditor. Hvis jeg f.eks. bruker scanf() til å skrive inn tekst og trykker <enter>, kan jeg jo ikke gå tilbake å editere en tidligere linje. Med andre ord: jeg regner med at dette må gjøres på en helt annen måte.

 

Det jeg da lurer på er om noen av dere har anelse om hvordan dette kan gjøres? Trenger ikke få en løsning på det, men en pekepinne ville ikke skadet :)

 

Håper noen kan hjelpe!

 

EDIT: Det jeg muligens trenger er en funksjon (lignende scanf) som ikke avsluttes når man trykker på enter, altså jeg kan lage linjeskift og gå tilbake osv uten at funksjonen returnerer, men aner ikke hvordan dette kan gjøres.

Endret av kjey
Lenke til kommentar
Videoannonse
Annonse

Jeg tror ikke scanf er tingen her, men gjør som du føler passer best.

Jeg viller heller lest hele filen inn med fread for så splitte filen opp i linjer (hvis tekst). Når du har splittet linjene kan du så redigere enkeltlinjer tegn for tegn og linje for linje.

 

Hvis du heller vil bruke direkte fil I/O så bør du kikke på: fsetpos og fgetpos. Funksjonene gjøre et mulig å flytte seg fram og tilbake i filen.

 

Lykke til

Lenke til kommentar

Jeg bruker C fordi det er det språket jeg vil lære meg ;) Kommer garantert borti C++ også, men akkurat nå er det C som er tingen.

 

Men uansett. Jeg har googlet en del og funnet noe, men ingenting som forklarer godt nok hvordan man kan oppnå dette. Det jeg tenkte litt på er å se på hvordan scanf(), gets() osv er implementert. På den måten kan jeg kanskje luke ut <enter>-mekanismen og heller si at funksjonen skal skifte linje. Har søkt en del på dette også, men kan ikke si at jeg har funnet noen implementasjon av disse funksjonene... Noen som vet hvor man kan finne disse (gjerne hjemmesnekra av vanlige folk)?

Lenke til kommentar

Har ikke lagd noe lignende selv, og er også litt nybegynner i C.. men jeg tror kanskje at å lage en buffer av skjermen (dvs, typisk 80 * 25 chars i text mode), samt å lage en "eventloop" som reagerer på f.eks piltastene, og oppdaterer posisjon i bufferen (x,y).

 

Videre må man implementere scrolling osv for at fila skal kunne være større enn skjermen.

 

Vel, bare noen tanker, men tror det er her jeg ville begynt.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...