Lập trình C – Chuyển đổi mảng ký tự ( chuỗi ) thành kiểu dữ liệu số ( int, float,… )

Rate this post

Trong lập trình, đôi khi sẽ có lúc chúng ta cần chuyển đổi 1 mảng ký tự ( chuỗi ) thành kiểu dữ liệu số như int, float, double,… .Vì vậy, hôm nay mình sẽ đưa ra những hàm thực hiện chức năng này trong ngôn ngữ C.

Để có thể chuyển giá trị từ mảng ký tự ( chuỗi ) sang kiểu dữ liệu số như integer hoặc float thì mảng ký tự đó phải là mảng ký tự số, ví dụ: “564”, “567.345”.

Chuyển đổi sang kiểu int

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

int main(){

    char str[10] = "658";
    int num = atoi(str);
    printf("Gia tri so nguyen duoc chuyen doi tu chuoi la: %d", num);
    return 0;
}

Đây là kết quả:

Chuyển đổi sang kiểu số thực float

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


int main(){

    char str[10] = "658.675";
    char* endPtr;
    float num = strtof(str, &endPtr);
    printf("Gia tri so thuc kieu float la: %f", num);
    return 0;
}

Đây là kết quả:

Chuyển đổi sang kiểu số thực double

Để chuyển đổi thì chúng ta sẽ dùng hàm double strtod(const char *_String, char **_EndPtr), cách dùng như hàm float strof(const char *_String, char **_EndPtr) mà mình đã trình bày ở phần chuyển đổi sang kiểu số thực float

Ngoài ra, còn có các hàm chuyển đổi khác như dưới đây:

  • long strtol(const char *_String, char **_EndPtr, int _Radix)
  • long double strtold(const char *_String, char **_EndPtr)
  • long long strtoll(const char *_String, char **_EndPtr, int _Radix)
  • unsigned long strtoul(const char *_String, char **_EndPtr, int _Radix)
  • unsigned long long strtoull(const char *_String, char **_EndPtr, int _Radix)

Những hàm mình liệt kê các bạn từ tìm hiểu thêm, mình sẽ không hướng dẫn chi tiết cách dùng những hàm này!

Hits: 114

Leave a Reply