Hàm atoi() trong C dùng để chuyển chuỗi sang số nguyên. Hàm nhận chuỗi đầu vào và trả về giá trị kiểu int.
Cú pháp
int atoi(const char* string)
Tham số – Chuỗi cần chuyển đổi.
Trả về – Giá trị nguyên. Trả về 0 nếu chuỗi không hợp lệ.
Triển khai atoi(): lấy từng ký tự, xây dựng số bằng cách nhân kết quả trước với 10 cộng thêm chữ số. Với số âm, kiểm tra ký tự đầu là '-', nhân kết quả với -1. Kiểm tra hợp lệ: mỗi ký tự phải trong '0'-'9'.
Ví dụ minh họa
#include <iostream>
using namespace std;
bool isNumericChar(char x) {
return (x >= '0' && x <= '9') ? true : false;
}
int myAtoi(char* str) {
if (*str == '\0')
return 0;
int result = 0;
int sign = 1;
int i = 0;
if (str[0] == '-') {
sign = -1;
i++;
}
for (; str[i] != '\0'; ++i) {
if (!isNumericChar(str[i]))
return 0;
result = result * 10 + str[i] - '0';
}
return sign * result;
}
int main() {
char string[] = "-32491841";
int intVal = myAtoi(string);
cout << "Giá trị nguyên của chuỗi: " << intVal;
return 0;
}
Kết quả
Giá trị nguyên của chuỗi: -32491841