Programski jezik C pokrenut je prije više od pet desetljeća. Od tada je stekao ogromnu popularnost u svijetu programiranja. Nadmašuje ostale jezike zahvaljujući svojim značajkama uključujući strukturnu jednostavnost, funkcije, prenosivost, učinkovito upravljanje memorijom, itd. Unatoč raznim drugim značajkama, funkcije u C-u su najistaknutija sredstva koja pomažu mnogim korisnicima u pisanju robusnih isječaka koda.
Nadalje, itoa je široko korištena nestandardna funkcija koja djeluje kao pretvarač tipa podataka. Uzima tip podataka int kao ulaz i pretvara ga u niz. Međutim, mnogi od vas ne znaju njegovu upotrebu. Stoga ovaj vodič sažeto objašnjava kako koristiti funkciju itoa u C-u bez gnjavaže.
Kako koristiti Itoa funkciju u C
Počnimo s osnovama. Evo jednostavne sintakse za funkciju itoa:
int glavni ( ) {
int na jedan = 12345 ;
char str [ dvadeset ] ;
utopio se ( na jedan , str , 10 ) ;
printf ( 'Cijeli broj: %d \n Niz: %s \n ' , na jedan , str ) ;
povratak 0 ;
}
U navedenom programu detalji su sljedeći:
- num je cijeli broj
- str je znak
- 10 je bas
Sada idemo naprijed, napišemo program i implementiramo funkciju itoa. Na primjer, trebamo napisati program za promjenu unesenih brojeva u niz.
#include
#include
poništiti utopio se ( int na jedan , char * str , int baza ) {
int ja = 0 ;
int je Negativno = 0 ;
ako ( na jedan == 0 ) {
str [ ja ++ ] = '0' ;
str [ ja ] = ' \0 ' ;
povratak ;
}
ako ( na jedan < 0 && baza != 10 ) {
je Negativno = 1 ;
na jedan = - na jedan ;
}
dok ( na jedan != 0 ) {
int rem = na jedan % baza ;
str [ ja ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'a' : rem + '0' ;
na jedan = na jedan / baza ;
}
ako ( je Negativno && baza == 10 )
str [ ja ++ ] = '-' ;
str [ ja ] = ' \0 ' ;
int početak = 0 ;
int kraj = ja - 1 ;
dok ( početak < kraj ) {
char temp = str [ početak ] ;
str [ početak ] = str [ kraj ] ;
str [ kraj ] = temp ;
početak ++;
kraj --;
}
}
int glavni ( ) {
int na jedan ;
printf ( 'Unesite cijeli broj: ' ) ;
ako ( skenirati ( '%d' , i na jedan ) != 1 ) {
fprintf ( stderr , 'Nevažeći unos. Unesite cijeli broj. \n ' ) ;
povratak EXIT_FAILURE ;
}
int najveća_veličina = snprintf ( NULL , 0 , '%d' , na jedan ) + 1 ;
char * str = ( char * ) malloc ( najveća_veličina ) ;
ako ( str == NULL ) {
fprintf ( stderr , 'Dodjela memorije nije uspjela \n ' ) ;
povratak EXIT_FAILURE ;
}
utopio se ( na jedan , str , 10 ) ;
printf ( 'Cijeli broj: %d \n Niz: %s \n ' , na jedan , str ) ;
besplatno ( str ) ;
povratak 0 ;
}
U prethodnom programu, itoa (int num, char *str, int base) je funkcija itoa. Štoviše, sljedeća sintaksa izravno dodjeljuje nulu rezultatu kada je ulazni broj također nula:
ako ( na jedan == 0 ) {str [ ja ++ ] = '0' ;
str [ ja ] = ' \0 ' ;
povratak ;
}
Kada je ulazni broj negativan, a baza također nije 10, sljedeće programske linije će postaviti negativnu oznaku:
ako ( na jedan < 0 && baza != 10 ) {
je Negativno = 1 ;
na jedan = - na jedan ;
Sljedeća petlja obrađuje sve znamenke i pretvara ih u odgovarajući znak. Dakle, za baze koje su veće od 10, program koristi slova 'a' do 'f' za znamenke od 10 do 15.
}dok ( na jedan != 0 ) {
int rem = na jedan % baza ;
str [ ja ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'a' : rem + '0' ;
na jedan = na jedan / baza ;
}
Kada je broj izvorno negativan, a baza je 10, program će nizu rezultata dodati predznak minus.
ako ( je Negativno && baza == 10 )str [ ja ++ ] = '-' ;
Sljedeći redovi završavaju niz rezultata i zatim ga preokreću kako se znamenke dobivaju obrnutim redoslijedom tijekom procesa pretvorbe:
str [ ja ] = ' \0 ' ;// Obrnuti niz
int početak = 0 ;
int kraj = ja - 1 ;
dok ( početak < kraj ) {
char temp = str [ početak ] ;
str [ početak ] = str [ kraj ] ;
str [ kraj ] = temp ;
početak ++;
kraj --;
}
Dakle, program uzima cijeli broj kao ulaz i dodjeljuje memoriju za prikaz niza. Nakon toga poziva itoa za pretvaranje cijelog broja u niz i ispisuje originalni cijeli broj. Konačno, oslobađa dodijeljenu memoriju. Na primjer, dajmo broj programu:
Međutim, ako unesete broj koji nije cijeli broj, program će pokazati sljedeći rezultat:
Zaključak
Ovako možete jednostavno implementirati i koristiti funkciju itoa u C-u. Koristili smo detaljan primjer koji sadrži više funkcija za pretvaranje cijelog broja u niz. Zapamtite, to je samo primjer, ali možete kombinirati funkciju itoa s raznim funkcijama da biste napisali nevjerojatne programe.