Az Itoa függvény használata C-ben

Az Itoa Fuggveny Hasznalata C Ben



A C programozási nyelv több mint öt évtizeddel ezelőtt jelent meg. Azóta óriási népszerűségre tett szert a programozási világban. Jellemzői, például szerkezeti egyszerűsége, funkciók, hordozhatóság, hatékony memóriakezelés stb. révén kiemelkedik a többi nyelv közül. Annak ellenére, hogy számos egyéb funkcióval is rendelkezik, a C nyelvű funkciók a legkiemelkedőbb eszközök, amelyek sok felhasználót segítenek a robusztus kódrészletek megírásában.

Ezenkívül az itoa egy széles körben használt nem szabványos funkció, amely adattípus-átalakítóként működik. Bemenetként az int adattípust veszi, és karakterláncsá alakítja. Sokan azonban nem ismerik a használatát. Ezért ez az útmutató tömören elmagyarázza, hogyan kell gond nélkül használni az itoa függvényt C nyelven.







Az Itoa függvény használata C-ben

Kezdjük az alapokkal. Íme az itoa függvény egyszerű szintaxisa:



int fő- ( ) {

int az egyiken = 12345 ;
char str [ húsz ] ;
megfulladt ( az egyiken , str , 10 ) ;
printf ( 'Egész szám: %d \n Karakterlánc: %s \n ' , az egyiken , str ) ;
Visszatérés 0 ;


}

Az adott programban a részletek a következők:



  1. a szám az egész szám
  2. str a karakter
  3. 10 a basszus

Most menjünk előre, írjunk egy programot, és hajtsuk végre az itoa függvényt. Például programot kell írnunk, hogy a beírt számokat a karakterláncba módosítsuk.





#include

#include

üres megfulladt ( int az egyiken , char * str , int bázis ) {

int én = 0 ;
int isNegatív = 0 ;

ha ( az egyiken == 0 ) {
str [ én ++ ] = '0' ;
str [ én ] = ' \0 ' ;
Visszatérés ;
}


ha ( az egyiken < 0 && bázis != 10 ) {

isNegatív = 1 ;
az egyiken = - az egyiken ;
}

míg ( az egyiken != 0 ) {
int rem = az egyiken % bázis ;

str [ én ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'a' : rem + '0' ;

az egyiken = az egyiken / bázis ;
}

ha ( isNegatív && bázis == 10 )
str [ én ++ ] = '-' ;

str [ én ] = ' \0 ' ;

int Rajt = 0 ;
int vége = én - 1 ;


míg ( Rajt < vége ) {

char hőm = str [ Rajt ] ;
str [ Rajt ] = str [ vége ] ;
str [ vége ] = hőm ;
Rajt ++;
vége --;
}
}

int fő- ( ) {
int az egyiken ;
printf ( 'Adjon meg egy egész számot: ' ) ;

ha ( scanf ( '%d' , & az egyiken ) != 1 ) {
fprintf ( stderr , 'Érvénytelen bevitel. Adjon meg egy egész számot. \n ' ) ;
Visszatérés EXIT_FAILURE ;
}

int max_size = snprintf ( NULLA , 0 , '%d' , az egyiken ) + 1 ;
char * str = ( char * ) malloc ( max_size ) ;

ha ( str == NULLA ) {
fprintf ( stderr , 'A memóriakiosztás nem sikerült \n ' ) ;
Visszatérés EXIT_FAILURE ;
}


megfulladt ( az egyiken , str , 10 ) ;

printf ( 'Egész szám: %d \n Karakterlánc: %s \n ' , az egyiken , str ) ;

ingyenes ( str ) ;

Visszatérés 0 ;


}

Az előző programban az itoa (int num, char *str, int base) az itoa függvény. Ezenkívül a következő szintaxis közvetlenül nullát rendel az eredményhez, ha a bemeneti szám is nulla:

ha ( az egyiken == 0 ) {

str [ én ++ ] = '0' ;
str [ én ] = ' \0 ' ;
Visszatérés ;


}

Ha a bemeneti szám negatív, és az alap szintén nem 10, a következő programsorok állítják be a negatív jelzőt:



ha ( az egyiken < 0 && bázis != 10 ) {

isNegatív = 1 ;
az egyiken = - az egyiken ;

A következő ciklus az összes számjegyet feldolgozza és megfelelő karakterré alakítja át. Ezért a 10-nél nagyobb bázisoknál a program az „a” és „f” közötti betűket használja a 10 és 15 közötti számjegyekhez.

}

míg ( az egyiken != 0 ) {

int rem = az egyiken % bázis ;

str [ én ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'a' : rem + '0' ;

az egyiken = az egyiken / bázis ;

}

Ha a szám eredetileg negatív és az alap 10, a program a negatív előjelet hozzáfűzi egy eredmény karakterlánchoz.

ha ( isNegatív && bázis == 10 )

str [ én ++ ] = '-' ;

A következő sorok fejezik be az eredmény karakterláncot, majd megfordítják, mivel a számjegyek fordított sorrendben jönnek létre az átalakítási folyamat során:

str [ én ] = ' \0 ' ;

// Fordítsa meg a karakterláncot

int Rajt = 0 ;

int vége = én - 1 ;

míg ( Rajt < vége ) {

char hőm = str [ Rajt ] ;
str [ Rajt ] = str [ vége ] ;
str [ vége ] = hőm ;
Rajt ++;
vége --;


}

Ezért a program az egész számot veszi bemenetként, és lefoglalja a memóriát a karakterlánc-reprezentációhoz. Ezt követően meghívja az itoa-t, hogy az egész számot karakterláncsá alakítsa, és kiírja az eredeti egész számot. Végül felszabadítja a lefoglalt memóriát. Például adjunk egy számot a programnak:

Ha azonban nem egész számot ad meg, a program a következő eredményt jeleníti meg:

Következtetés

Így egyszerűen implementálhatja és használhatja az itoa függvényt C-ben. Részletes példát használtunk, amely több függvényt tartalmaz az egész szám karakterláncsá alakításához. Ne feledje, ez csak egy példa, de az itoa függvényt különféle funkciókkal kombinálhatja, és csodálatos programokat írhat.