כיצד להשתמש בפונקציית Itoa ב-C

Kyzd Lhstms Bpwnqzyyt Itoa B C



שפת התכנות C הושקה לפני למעלה מחמישה עשורים. מאז, הוא צבר פופולריות עצומה בעולם התכנות. הוא מצטיין בשפות האחרות בשל התכונות שלו כולל פשטות מבנית, פונקציות, ניידות, ניהול זיכרון יעיל וכו'. למרות שיש לה תכונות שונות אחרות, פונקציות ב-C הן הנכסים הבולטים ביותר המסייעים למשתמשים רבים בכתיבת קטעי הקוד החזקים.

יתר על כן, itoa היא פונקציה לא סטנדרטית בשימוש נרחב הפועלת כממיר סוגי נתונים. הוא לוקח את סוג הנתונים int כקלט וממיר אותו למחרוזת. עם זאת, רבים מכם אינם יודעים את השימוש בו. לכן, מדריך זה מסביר בתמציתיות כיצד להשתמש בפונקציית itoa ב-C ללא טרחה.







כיצד להשתמש בפונקציית Itoa ב-C

בואו נתחיל עם היסודות. להלן התחביר הפשוט לפונקציית itoa:



int רָאשִׁי ( ) {

int על אחד = 12345 ;
לְהַשְׁחִיר str [ עשרים ] ;
טָבוּעַ ( על אחד , str , 10 ) ;
printf ( 'מספר שלם: %d \n מחרוזת: %s \n ' , על אחד , str ) ;
לַחֲזוֹר 0 ;


}

בתוכנית הנתונה, הפרטים הם כדלקמן:



  1. num הוא המספר השלם
  2. str הוא הדמות
  3. 10 זה הבס

כעת, בוא נתקדם, נכתוב תוכנית וניישם את פונקציית itoa. לדוגמה, עלינו לכתוב תוכנית כדי לשנות את המספרים שהוזנו למחרוזת.





#include

#include

בָּטֵל טָבוּעַ ( int על אחד , לְהַשְׁחִיר * str , int בסיס ) {

int אני = 0 ;
int הוא שלילי = 0 ;

אם ( על אחד == 0 ) {
str [ אני ++ ] = '0' ;
str [ אני ] = ' \0 ' ;
לַחֲזוֹר ;
}


אם ( על אחד < 0 && בסיס != 10 ) {

הוא שלילי = 1 ;
על אחד = - על אחד ;
}

בזמן ( על אחד != 0 ) {
int rem = על אחד % בסיס ;

str [ אני ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'א' : rem + '0' ;

על אחד = על אחד / בסיס ;
}

אם ( הוא שלילי && בסיס == 10 )
str [ אני ++ ] = '-' ;

str [ אני ] = ' \0 ' ;

int הַתחָלָה = 0 ;
int סוֹף = אני - 1 ;


בזמן ( הַתחָלָה < סוֹף ) {

לְהַשְׁחִיר טמפ' = str [ הַתחָלָה ] ;
str [ הַתחָלָה ] = str [ סוֹף ] ;
str [ סוֹף ] = טמפ' ;
הַתחָלָה ++;
סוֹף --;
}
}

int רָאשִׁי ( ) {
int על אחד ;
printf ( 'הזן מספר שלם:' ) ;

אם ( scanf ( '%d' , & על אחד ) != 1 ) {
fprintf ( סטדרר , 'קלט לא חוקי. אנא הזן מספר שלם. \n ' ) ;
לַחֲזוֹר EXIT_FAILURE ;
}

int גודל מקסימלי = snprintf ( ריק , 0 , '%d' , על אחד ) + 1 ;
לְהַשְׁחִיר * str = ( לְהַשְׁחִיר * ) malloc ( גודל מקסימלי ) ;

אם ( str == ריק ) {
fprintf ( סטדרר , 'הקצאת הזיכרון נכשלה \n ' ) ;
לַחֲזוֹר EXIT_FAILURE ;
}


טָבוּעַ ( על אחד , str , 10 ) ;

printf ( 'מספר שלם: %d \n מחרוזת: %s \n ' , על אחד , str ) ;

חינם ( str ) ;

לַחֲזוֹר 0 ;


}

בתוכנית הקודמת, itoa (int num, char *str, int base) היא הפונקציה itoa. יתר על כן, התחביר הבא מקצה ישירות אפס לתוצאה כאשר מספר הקלט הוא גם אפס:

אם ( על אחד == 0 ) {

str [ אני ++ ] = '0' ;
str [ אני ] = ' \0 ' ;
לַחֲזוֹר ;


}

כאשר מספר הקלט שלילי וגם הבסיס אינו 10, שורות התוכנית הבאות יקבעו את הדגל השלילי:



אם ( על אחד < 0 && בסיס != 10 ) {

הוא שלילי = 1 ;
על אחד = - על אחד ;

הלולאה הבאה מעבדת את כל הספרות וממירה אותן לתו תואם. לפיכך, עבור בסיסים שגדולים מ-10, התוכנית משתמשת באותיות 'a' עד 'f' עבור הספרות 10 עד 15.

}

בזמן ( על אחד != 0 ) {

int rem = על אחד % בסיס ;

str [ אני ++ ] = ( rem > 9 ) ? ( rem - 10 ) + 'א' : rem + '0' ;

על אחד = על אחד / בסיס ;

}

כאשר המספר שלילי במקור והבסיס הוא 10, התוכנית תוסיף את הסימן השלילי למחרוזת תוצאה.

אם ( הוא שלילי && בסיס == 10 )

str [ אני ++ ] = '-' ;

השורות הבאות מסיימות את מחרוזת התוצאה ואז הופכות אותה כשהספרות מתקבלות בסדר הפוך במהלך תהליך ההמרה:

str [ אני ] = ' \0 ' ;

// הפוך את המחרוזת

int הַתחָלָה = 0 ;

int סוֹף = אני - 1 ;

בזמן ( הַתחָלָה < סוֹף ) {

לְהַשְׁחִיר טמפ' = str [ הַתחָלָה ] ;
str [ הַתחָלָה ] = str [ סוֹף ] ;
str [ סוֹף ] = טמפ' ;
הַתחָלָה ++;
סוֹף --;


}

לפיכך, התוכנית לוקחת את המספר השלם כקלט ומקצה את הזיכרון לייצוג המחרוזת. לאחר מכן, הוא קורא ל-itoa להמיר את המספר השלם למחרוזת ומדפיס את המספר השלם המקורי. לבסוף, זה משחרר את הזיכרון שהוקצה. לדוגמה, בואו ניתן מספר לתוכנית:

עם זאת, אם תזין מספר שאינו שלם, התוכנית תציג את התוצאה הבאה:

סיכום

כך תוכלו ליישם ולהשתמש בקלות בפונקציה itoa ב-C. השתמשנו בדוגמה מפורטת המכילה מספר פונקציות כדי להמיר את המספר השלם למחרוזת. זכור, זו רק דוגמה, אבל אתה יכול לשלב את הפונקציה itoa עם פונקציות שונות כדי לכתוב תוכניות מדהימות.