Chuyển chuỗi "abc123" thành số "123"?

Thằng atoi cho kết quả = 0 , Cho mình hỏi có hàm nào làm được việc này?
Hay lại phải sắp xếp bong bóng "abc123" thành "123abc"

char* xxx = "abc123";
printf("%d\n", atoi(xxx)); // 0
printf("%d\n", atoi(xxx+3)); // 123
3 Likes

Cảm ơn nhiều, vậy còn "abc123d4" -> 1234 ?

Chịu khó parse tay thôi :smiley:

3 Likes

Nếu "abc123d4" mà ra 1234 thì lúc này bạn tạm gác atoi() qua 1 bên. Hãy tự viết 1 hàm (hoặc đoạn lệnh) thực hiện việc loại bỏ các kí tự không phải số. Sau đó gọi atoi() là xong.
Dùng vòng lặp và lệnh điều kiện if - else.
Bạn có thể làm 2 hướng:

  1. Loại bỏ kí tự không phải số trực tiếp trên chuỗi (mảng kí tự) hiện tại.
  2. Dùng chuỗi khác chỉ để lưu các kí tự số. Cách này xem ra nhanh hơn. :smiling_imp:

:thinking:
À, cần gì chuỗi khác với atoi(), tính giá trị rồi cộng vào là ra kết quả luôn.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?