Nội dung bài viết
STDIO Bài viết giới thiệu về phương thức atoi trong C/C++. Đây là phương thức thuộc thư viện cstdlib, giúp chúng ta chuyển đổi một chuỗi thành một số nguyên một cách nhanh chóng.

Giới thiệu

Trong quá trình phát triển phần mềm, chúng ta thường gặp trường hợp phải chuyển một chuỗi gồm các ký tự là những số về thành một số cụ thể để thuận tiện cho việc tính toán. Nếu hiểu rõ nguyên lý, quán trình chuyển đổi không quá khó khăn, nhưng vẫn rất tốn thời gian. C\C++ có hỗ trợ phương thức atoi giúp chúng ta giải quyết vấn đề chuyển chuỗi thành số nguyên này một cách nhanh chóng.

Tiền đề bài viết

Bài viết này ra đời nhằm giúp giải quyết nhu cầu chuyển chuỗi thành số khi lập trình với ngôn ngữ C/C++.

Đối tượng hướng đến

Đối tượng hướng đến trong bài viết này là những bạn mới bắt đầu tiếp cận ngôn ngữ lập trình C\C++.

atoi là gì?

atoi là một phương thức thuộc thư viện cstdlib - C Standard General Utilities Library (stdlib.h). Phương thức này giúp bạn chuyển đổi một chuỗi về số nguyên, có kiểu giá trị là int.

Cú pháp

int atoi (const char * str);

Trong đó, str là một chuỗi cần chuyển đổi.

Phương thức atoi sẽ trả về là dạng giá trị là số nguyên kiểu int. Nếu như không có sự chuyển đổi thích hợp thì phương thức sẽ trả về giá trị là 0.

Giải thuật chuyển đổi

Đầu tiên atoi sẽ xóa bỏ mọi kí tự khoảng trắng (bao gồm ' ', '\t', '\n', '\v', '\f', '\r') đầu tiên trong chuỗi cho tới khi kí tự đầu tiên không phải là kí tự khoảng trắng được tìm thấy.

Sau đó, xét kí tự đầu tiên để biểu thị chuỗi cẩn chuyển thành số âm (-) hay số dương (+) và chuyển các kí tự '0' đến '9' về kiểu số tương ứng từ 0 đến 9.

Ví dụ

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int val;
   char str[20];
   
   strcpy(str, "1234567");
   val = atoi(str);
   printf("String value = %s, Int value = %d\n", str, val);

   strcpy(str, "STDIO.VN");
   val = atoi(str);
   printf("String value = %s, Int value = %d\n", str, val);

   return(0);
}

Lưu ý: trong quá trình biên dịch, bạn có thể bị lỗi C4996 'strcpy': This function or variable may be unsafe. Các bạn có thể tham khảo bài viết Compiler Warning C4996 Và C Run-time Library Hay _CRT _SECURE_NO_WARNINGS (CRT) để hiểu thêm về lỗi này.

Kết quả:

atoi-example

Dòng đầu tiên, do chuỗi gồm những kí tự số nên giá trị của value = 1234567 > 0.

Chuỗi thứ 2 do không thể chuyển về số nên giá trị của value = 0.

Lưu ý: với 1 chuỗi gồm cả chữ cái lẫn số, thì phương thức atoi sẽ lấy chuyển từ kí tự số đầu tiên tới kí tự chữ cái đầu tiên trong chuỗi thành số. Trong trường hợp kí tự đầu tiên không phải kí tự số, phương thức atoi sẽ trả về giá trị 0.

printf("atoid(\"30A13\"): %d\n", atoi("30A13"));
printf("atoid(\"A18\"): %d\n", atoi("A18"));

Kết quả:

atoi-note

THẢO LUẬN
ĐÓNG