การ Convert ระหว่าง char* กับ int ใน C
บทความนี้ จะมาแนะนําการใช้ฟังก์ชั่น 2 ตัวใน C กัน มันถูกประกาศอยู่ใน stdlib.h เป็นฟังก์ชั่นครับ ไม่ใช่ฟังก์ชั่นตัวใหม่อะไรในภาษาC++ นะครับ มันยังอยู่ในขอบเขตของการศึกษา C ได้.... มันเป็นฟังก์ชั่นในการแปลงจาก char* เป็น int และแปลงจาก int เป็น char *
กาลครั้งหนึ่ง สมาชิกท่านนึงได้ยิงถามมาว่า เวลารับค่าในเกมเนี่ย เราสร้าง GUI ที่ใช้ Text Box เวลารับค่าตัวเลขเข้ามา มันจะเป็น char * คือ เอา char num[30]; เข้ามาเก็บค่าตัวเลข แต่เมื่อเราจะเอาค่าตัวเลขนี้ไปใช้ประมวลผล ไปคํานวณ นั่นล่ะครับ จะทําอย่างไร เราจะต้อง convert จาก char[] ให้เป็น int ซึ่งจะใช้ฟังก์ชั่นที่ชื่อว่า อะต๊อย (atoi) แต่ถ้าจะเปลี่ยนจาก int เป็น char[] ให้ใช้ อิเต๊า (itoa) ทั้งสองฟังก์ชั่นมีรายละเอียดดังนี้ครับ (จาก MSDN)
char *_itoa( int value, char *string, int radix );
int atoi( const char *string );
จากข้างต้น itoa เป็นการแปลงจาก int -> char* แต่ถ้า atoi จะแปลงจาก char* -> int แต่ก็ยังมีอีกตัว ชื่อว่า
double atof( const char *string );
อันนี้เป็นการแปลงให้เป็น float ครับ (char[] -> float)
เราจะใช้ก็ต่อเมื่อ..... เรามีตัวเลขอยู่ใน char[] และเราต้องการเอามันมาประมวลผล นั่นล่ะครับ เรียกใช้มันซะ ลองดูตัวอย่าง code ต่อไปนี้
ตัวอย่างการใช้ atoi แปลงข้อความ 1234 ให้เป็น int
int num=atoi("1234");
num++;
printf("Num = %d",num);ตัวอย่างการใช้ itoa แปลงตัวเลข 590 ให้เป็น char และแสดงผลออกมาโดยหาขนาดของ string มาด้วยล่ะ
int n=590;
char buff[50];
itoa(n,buff,10);
printf("data=%s (%d)\n",buff,strlen(buff));คําสั่ง itoa นั้น พารามิเตอร์ตัวสุดท้ายก็คือฐานครับ ว่าจะเป็นเลขฐาน 10 ฐาน 2 หรือฐาน 16 ก็ใส่ลงไปครับ