Kezdőoldal » Számítástechnika » Programozás » C nyelvben hogy tudom megcsiná...

C nyelvben hogy tudom megcsinálni hogy ha beolvasom a backspacet, akkor törölje az utolsó beírt karaktert?

Figyelt kérdés

int main()

{

int key;

while(key==key)

{

key=getch();

printf("%c",key);

}

}


A bspacere egy szimbólumot ír...



2014. okt. 9. 11:12
1 2 3
 1/22 A kérdező kommentje:
Amúgy C4droidon csináltam ezt.
2014. okt. 9. 11:18
 2/22 anonim ***** válasza:

> beolvasom a backspacet, akkor törölje az utolsó beírt karaktert?


A getch() nem egy editor funkcionalitást valósít meg, csak blokkol amíg nem érkezik be a stream-en egy karakternyi adat. Alapesetben ez a stream az sdtio azaz a billentyűzet.

A te programod kiír minden lenyomott billentyűt, ezenkívül mást nem csinál, a backspace pedig egy különleges szimbólum, úgy ahogy az enter például két szimbólum.


Ahhoz hogy ténylegesen szöveget írj be és akár visszafelé törölj szükséged lesz egy bufferre, ami akár lehet egy char[] is. Minden billentyű lenyomásra ezt frissíted, backspace esetében pedig visszalépsz és törölsz (beírsz egy '\0'-t. Persze ez csak akkor működik, ha nem a szöveg közepén nyomsz egy backspace-t, így már nem is olyan könnyű igaz? Ráadásul ahhoz hogy nézzen is ki valahogyan a konzolos képernyő ugyan azon sorába kell kiírnod ugyan azt buffert, sőt törölnöd kell a már ott lévő karaktereket. Ehhez szükséged lesz egy külső függvénykönyvtárra.


Linuxon (androidon) van más lehetőséged is. Elvileg ha kiírod a backspace-et vissza kell mennie, printf("\b"); ha ez nem működik, akkor nem szabványos terminálod van.


printf("\033[8;5Hhello");


Ez a sor a képernyő (8, 5) pontjára teszi a kurzort és kiírja, hogy "hello". Attól tartok ez sem fog menni neked. Valószínűleg a C4droid-ban nincs rendes terminál, csak egy egyszerű kiiratás. Ha sikerülne lefordítanod natívan és az androidod terminálján futtatnád, szerintem a backspace kapásból működne.


> while(key==key)

Ez mi a lótúró? Azonkívül hogy végtelen ciklus? Használj (key == 27) -et ez az escape key kódja.


> A bspacere egy szimbólumot ír...

Mivel a backscape egy szimbólum, aminek általában a törlés a jelentése.


> Amúgy C4droidon csináltam ezt.

Nincs asztali géped, vagy notid?

2014. okt. 9. 12:33
Hasznos számodra ez a válasz?
 3/22 A kérdező kommentje:

Van gépem, de csak ma szereztem meg a Cfree telepítőjét. De ez mellékes.

Amúgy bevallom,nem sokat értettem ebből az egészből.

És még valami:nincs escape gomb androidon!

2014. okt. 9. 13:30
 4/22 anonim ***** válasza:

"de csak ma szereztem meg a Cfree telepítőjét"

WTF?

2014. okt. 9. 13:38
Hasznos számodra ez a válasz?
 5/22 uno20001 ***** válasza:

#2: Most próbáltam:

#include<stdio.h>


int main(void){

printf("\033[8;5Hhello");

printf("\b");

return 0;

}


A képernyő 8. sorának 5. karakterével kiírja, hogy "hell". Tehát tökéletes, nem véletlen nem ingyenes a C4Droid.

2014. okt. 9. 15:41
Hasznos számodra ez a válasz?
 6/22 A kérdező kommentje:

#4-es!

Van valami problémád ezzel?

Ma szereztem meg, igen. Haverom ma adta oda. Ebben mi a WTF??



Amúgy ez nekem nem működik:

#include <stdio.h>

int main(void)

{

printf("\033[8;5]hello");

printf("\b");

return 0;

}

2014. okt. 9. 15:57
 7/22 uno20001 ***** válasza:

#6: Mert talán ehelyett: "printf("\033[8;5]hello");", ezt kellene írni: "printf("\033[8;5Hhello");".


Plusz a mi a wtf az a cfree? Mért nem jó neked a CodeBlocks + gcc kombó?

2014. okt. 9. 16:27
Hasznos számodra ez a válasz?
 8/22 anonim ***** válasza:

> Ma szereztem meg, igen. Haverom ma adta oda.

Mintha valami Szent Grál lenne, vagy egy olimpiai láng. Véletlenül sem lehet letölteni 20 félé internetről.


> Amúgy ez nekem nem működik

Akkor legközelebb legalább lemásolni próbáld meg jól.

Vagy kérd meg a haverodat :D

2014. okt. 9. 17:14
Hasznos számodra ez a válasz?
 9/22 A kérdező kommentje:

Balf**zok...

Ámúgy azt hittem hogy elírás az a H betű,mert nem zárta be a szögletes zárójelet(a h a g mellett van és az altgr g vel lehet bezárni,de ha félrenyom ott a H betű)...

De úgy tűnik tévedtem.

2014. okt. 9. 19:55
 10/22 uno20001 ***** válasza:
Jajám, tévedtél, tehát nem mi vagyunk a b**f****k
2014. okt. 9. 21:13
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!