2024(e)ko abenduaren 1(a), igandea

printf(), bigarren hurbilketa


printf
#include <stdio.h>

int printf(const char * formatukatea, argumentu1, argumentu2, ...);

Aipatzen ari garen printf() funtzioak stdout irteera estandarrean idazten du argumentuak adierazten duena (stdout irteera estandarra normalean pantaila da). Funtzio honek hainbat argumentu izan ditzake, bere lehen argumentua kate konstante bat da non bi motako elementuak bereizten diren:

  1. Lehenengo motako elementuak pantailan agertuko diren karaktereak dira.
  2. Bigarren motako elementuak argumentuak erakusteko modua deskribatzen duten formatu-zehaztatzaileak edo formatu-aginduak dira. Formatu-zehaztatzailea % sinbolotik hasten da, eta, ondoren, formatu-kodea doa. 

Hona hemen printf() funtzioaren formatu-zehaztatzaileen taula, non eskubiko zutabearen bitartez adierazten da formatu-zehaztatzaile guzti horietatik zeintzuk erabiliko ditugun (BAI marka dituztenak):

printf() funtzioaren formatu-zehaztatzaileak
 Zehaz.  Deskribapena  Adibidea Ikasi
   %% Inprimatu % sinboloa. % BAI
   %c Karakterea. w BAI
   %s Karaktere-katea. kaixo BAI
   %d Osoko hamartarra zeinuarekin. -9125 BAI
   %i Osoko hamartarra zeinuarekin. +9125 EZ
   %u Osoko hamartarra zeinurik gabe. 1299 BAI
   %f Zenbaki erreala edo puntu flotatzailea. 74.9315 BAI
   %e Notazio zientifikoko zenbaki erreala (e xehea). 3.926e+2 BAI
   %E Notazio zientifikoko zenbaki erreala (E larria). 3.926E+2 BAI
   %g %e eta %f artean laburrena erabili. 392.6 EZ
   %G %E eta %f artean laburrena erabili. 392.6 EZ
   %o Zortzitarra zeinurik gabe. 74 (60) EZ
   %x Hamaseitarra, zeinurik gabeak (letra xeheak). 3c (60) EZ
   %X Hamaseitarra, zeinurik gabeak (letra larriak). 3D (61) EZ
   %p Erakusle baten edukia pantailaratu. b7000000 EZ
   %n Ezer inprimatuta. Dagokion argumentuak zeinudun int baten erakuslea izan behar du. Orain arte idatzitako karaktere kopurua adierazitako kokapenean gordetzen da.   EZ


Gainera, h (short), l (long) eta L (long) aldatzaileak daude:

  • h (short) aldatzailea d, i, u, o, x eta X datu-motei aplika dakieke, eta esaten digu datu-mota short int dela edo unsigned short int dela, kasuaren arabera.
  • l (long) aldatzailea aurreko kasuetan aplika daiteke (d, i, u, o, x eta X), eta adierazten du datu-mota long int dela edo unsigned long int dela, baina, horrez gain...
  • l (long) aldatzailea e, E, f eta g datu-motei ere aplika dakieke, datu-mota double dela adieraziz.
  • L (long) aldatzailea e, E, f eta g datu-motei aplika dakieke, eta datu-mota long double dela adierazten du.

Bestalde, printf() funtzioak benetan idatzitako karaktere kopurua itzultzen du. Balio negatibo batek errore bat gertatu dela adierazten du.

Hona hemen printf() funtzioaren hainbat adibide:

/* printf() funtzioaren lehen hurbilketa: adibideak */

#include <stdio.h>

int main()
{
   short shZbk1 =  12890;           // short int
   short shZbk2 = -29033;           // short int
   unsigned short ushZbk = 12891;   // unsigned short int
   long lZbk1 =  777000111;         // long int
   long lZbk2 = -777000111;         // long int
   unsigned long ulZbk = 777000222; // unsigned long int
   double dbZbk1 =  59.12345;
   double dbZbk2 = -59.12345;

   printf("\n\n");
   printf("\t BEZ zerga %%%d-koa da \n", 12);
   printf("\t Alfabetoaren hasiera: %c | %c | %c  | %c ... \n", 65, 'B', 0x43, 0104);
   printf("\t Zer moduz zabiltz? %s \n", "Ni, oso ondo");
   printf("\n");
   printf("\t Osokoak zeinuarekin: %d | %d \n", 9774, -7492);
   printf("\t Osokoak zeinuarekin: %i | %i \n", 9775, -7493);
   printf("\t Osokoak zeinurik gabe: %u | %u \n", 9776, -7494);
   printf("\t Osoko laburrak zeinuarekin: %hd | %hd \n", shZbk1, shZbk2);
   printf("\t Osoko laburra zeinurik gabe: %hu \n", ushZbk);
   printf("\t Osoko luzeak zeinuarekin: %ld | %ld \n", lZbk1, lZbk2);
   printf("\t Osoko luzea zeinurik gabe: %lu \n", ulZbk);
   printf("\n");
   printf("\t Zenbaki errealak formaturik gabe: %f | %f \n", 59.12345, -59.12345);
   printf("\t Zenbaki errealak formatuarekin: %.3f | %.3f \n", 59.12345, -59.12345);
   printf("\t Zenbaki errealak formatuarekin: %10.3f | %10.3f \n", 59.12345, -59.12345);
   printf("\t Zenbaki errealak formatuarekin: %010.3f | %010.3f \n", 59.12345, -59.12345);
   printf("\t Zenbaki erreal luzeak (dobleak): %lf | %lf \n", 59.12345, -59.12345);
   printf("\t Zenbaki erreal luzeak (dobleak): %lf | %lf \n", dbZbk1, dbZbk2);
   printf("\n\n");

   return 0;
}

iruzkinik ez:

Argitaratu iruzkina