Entrée de chaîne en utilisant getchar ()

Le code suivant utilise getchar () pour accepter une ligne d’entrée.

#include  #include  int main() { char *rawSsortingng = (char *)malloc(200*sizeof(char)); char *rawSsortingngInitial = rawSsortingng; char c; c=getchar(); while(c!='\n') { *rawSsortingng=c; rawSsortingng++; c=getchar(); } *rawSsortingng='\0'; printf("\n[%s]\n",rawSsortingngInitial); return(0); } 

Lors de la frappe, si j’appuie sur la touche retour arrière, ne devrait-il pas être reçu également par getchar () et stocké à l’emplacement indiqué par rawSsortingng? Cependant, la sortie affiche simplement la chaîne finale sans aucun caractère spécial. Quelqu’un pourrait-il expliquer pourquoi?

L’entrée standard est (généralement) mise en tampon; Les caractères non imprimables tels que le retour arrière sont gérés par le serveur Terminal Server et les fonctions de bibliothèque telles que getchar() ne les verront jamais.

Si vous avez besoin de lire des séquences de touches brutes, vous devrez utiliser quelque chose en dehors de la bibliothèque standard C.

 #include #include #include void get_ssortingng(char *ssortingng); void main(){ char *ssortingngVar; clrscr(); printf("Enter Ssortingng : "); get_ssortingng(ssortingngVar); printf("Ssortingng Enter : %s",ssortingngVar); getch(); } void get_ssortingng(char *ssortingng){ char press;int i=0; do{ press=getch(); if(press!=8){ printf("%c",press); ssortingng[i]=press; i++; } else if(i>0){printf("\b%c\b",0);sting[i]=NULL;i--;} }while(press!13); } 

C’est Will Work.