การ Convert ระหว่าง char* กับ int ใน C จัดทำโดย : langjuko พิมพ์


การ 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 ก็ใส่ลงไปครับ

คุณอาจสนใจ
Upload ข้อมูลเว็บไซต์ด้วย Dreamweaver (FTP Dreamweaver)
Mr.GuruZ (67,257 - 27 ธ.ค. 49)
การเขียน โปรแกรมสร้าง Link List ด้วยภาษา C
langjuko (55,639 - 19 ก.ย. 51)
การทำระบบ Login โดยใช้ฐานข้อมูล
Mr.GuruZ (260,016 - 03 มิ.ย. 49)
วิธีเล่น MSN กับเมล์อื่น ๆ ที่ไม่ใช่ hotmail
เว็บไทยดีดี (15,516 - 03 พ.ย. 50)
ลดแท็บเหลือแค่ไอคอนใน Firefox
เว็บไทยดีดี (13,958 - 22 ก.ย. 50)
เรียนรู้วิธีการสร้างฐานข้อมูลด้วยตัวคุณเอง
Mr.N (33,358 - 30 เม.ย. 50)
เทคนิคการแสดงค่า IP Address
Mr.GuruZ (35,320 - 03 มิ.ย. 49)
คำถามยอดฮิตเร่งสปีดบรอดแบนด์
เว็บไทยดีดี (14,744 - 22 ก.ย. 50)