2025(e)ko otsailaren 19(a), asteazkena

Karaktereak maneiatzeko funtzioak: putchar(), getchar(), getch() eta getche()

Karaktere bat irakurtzeko orokorra den scanf() funtzioaren bitartez egin daiteke. Karaktere bat irakurtzeko espezifikoak diren lau funtzio hauek ikasiko ditugu: getchar(), getch() eta getche().  


int getchar(void);
int putchar(int c);

getchar() funtzioak ENTER sakatzean teklatutik irakurritako karaktere bat irakurri eta ASCII balioa itzultzen du, EOF itzultzen du CRTL+Z sakatzean.

/* GETCHAR_funtzioa.cbp */

// getchar() funtzioak zenbaki oso bat itzultzen du, karakterearen ASCII balioa

#include <stdio.h>

int main()
{
   char cLetra;

   printf("\n\n Letra minuskulak irakurtzen...");
   printf("\n");
   do
   {
       printf("\n Alfabetoko letra bat eman ('a' eta 'z' artekoa). Amaitzeko 'X' sartu: ");
       cLetra=getchar();
       fflush(stdin);   // teklatuaren bufferra garbitzeko Windows sistemetan
       printf(" Jasotako karakterea: |%c| \n", cLetra);
   }
   while (cLetra != 'X');

   printf("\n\n");
   return 0;
}

putchar() funtzioak idatzitako karakterea itzultzen du. Idazketa-errore bat gertatzen bada, putchar()-ek EOF itzultzen du.

/* PUTCHAR_funtzioa.cbp */

// putchar() funtzioak idatzitako karakterea itzultzen du

#include <stdio.h>

int main()
{
   int iKont;
   char cKont;

   printf("\n\n Larrien alfabetoa pantailaratzen...");
   printf("\n");

   for (iKont=65; iKont<=90; iKont++)
   {
       putchar(' ');   // zuriunea, karaktereak banatzeko
       putchar(iKont);
   }

   printf("\n\n Xeheen alfabetoa pantailaratzen...");
   printf("\n");

   for (cKont='a'; cKont<='z'; cKont++)
   {
       putchar(' ');   // zuriunea, karaktereak banatzeko
       putchar(cKont);
   }

   printf("\n\n");
   return 0;
}



int getch(void);

Parametroak: funtzio honek ez du parametrorik onartzen.
Itzulera-balioa: funtzio honek tekla presionatuaren ASCII balioa itzultzen du.

getch() funtzio ez-estandarra da, eta conio.h fitxategian dago. Beste funtzio batzuk bezala, getch()-k teklatuaren karaktere bakarra irakurtzen du. Baina ez du bufferrik erabiltzen, eta, beraz, sartutako karakterea berehala itzultzen da, ENTER tekla sakatu arte itxaron gabe.

getch() funtzioari buruzko puntu garrantzitsuak:

  1. getch() funtzioak irteerako kontsola geldiarazten du tekla bat sakatu arte.
  2. Ez du bufferrik erabiltzen sarrera-karakterea gordetzeko.
  3. Sartutako karakterea berehala itzultzen da ENTER teklaren zain egon gabe.
  4. Sartutako karakterea ez da kontsolan agertzen.
  5. getch() funtzioa ezkutuko sarrerak onartzeko erabil daiteke, hala nola pasahitzak, kutxazain automatikoen PIN zenbakiak, etab.
/* GETCH_funtzioa.cbp */

// getch() funtzioak zenbaki oso bat itzultzen du, karakterearen ASCII balioa

#include <stdio.h>
#include <conio.h>   // getch() funtzioarako

int main()
{
   char cLetra;

   printf("\n\n Letra minuskulak irakurtzen...");
   printf("\n");
   printf("\n Alfabetoko letra bat eman ('a' eta 'z' artekoa). Amaitzeko 'X' sartu:\n ");
   do
   {
       cLetra=getch();
       // fflush(stdin);   ez da teklatuaren bufferra garbitu beharrik
       printf("Jasotako karakterea: |%c|\n ", cLetra);
   }
   while (cLetra != 'X');

   printf("\n");
   return 0;
}



int getche(void);

getche() teklatuaren karaktere bakarra irakurtzen du eta berehala agertzen da irteera-pantailan, ENTER teklaren zain egon gabe. Funtzio hau, getch() bezala, ez da estandarra eta conio.h fitxategian dago.

/* GETCHE_funtzioa.cbp */

// getche() funtzioak zenbaki oso bat itzultzen du, karakterearen ASCII balioa

#include <stdio.h>
#include <conio.h>   // getche() funtziorako

int main()
{
   char cLetra;

   printf("\n\n Letra minuskulak irakurtzen...");
   printf("\n");
   do
   {
       printf("\n Alfabetoko letra bat eman ('a' eta 'z' artekoa). Amaitzeko 'X' sartu: ");
       cLetra=getche();
       // fflush(stdin);   ez da teklatuaren bufferra garbitu beharrik
       printf("\n Jasotako karakterea: |%c|", cLetra);
   }
   while (cLetra != 'X');

   printf("\n\n");
   return 0;
}
 

iruzkinik ez:

Argitaratu iruzkina