Chuyển số thành chuỗi trong C (sprintf, snprintf, itoa) | Laptrinhcanban.com

HOME › >>

Chuyển số thành chuỗi trong C (sprintf, snprintf, itoa)

Hướng dẫn cách chuyển số thành chuỗi trong C. Bạn sẽ học được cách sử dụng hàm sprintf() , snprintf() và itoa() để chuyển số thành chuỗi trong C sau bài học này.

Chúng ta có 2 phương pháp để chuyển số thành chuỗi trong C như sau:

  • Hàm sprintf(): Hàm chuyển số thành chuỗi trong C theo format
  • Hàm snprintf(): Hàm chuyển số thành chuỗi trong C chỉ định độ dài chuỗi kết quả
  • Hàm itoa(): Chuyển int sang string trong C

Chuyển số thành chuỗi trong C theo format | hàm sprintf()

Hàm sprintf() trong C vốn là một hàm có sẵn trong header file stdio.h, giúp chúng ta tạo tạo một chuỗi đầu ra từ các biến với kiểu và định dạng khác nhau.

Trong trường hợp chỉ định các biến này là các số, chúng ta đơn giản có thể chuyển số thành chuỗi trong C lại và tạo thành một chuỗi mới chứa kết quả thông qua hàm sprintf().

Cú pháp của hàm sprintf() để chuyển số thành chuỗi trong C như sau:

sprintf (target, format, num) ;

Trong đó

  • target là chuỗi đích
  • num là số cần chuyển thành chuỗi
  • format là chuỗi định dạng của số đó. Tuỳ thuộc số này là số nguyên hay số thực mà sẽ có định dạng tương ứng. Xem thêm: Định dạng nhập xuất trong C.

Bằng cách sử dụng hàm sprintf(), chúng ta có thể thực hiện các phép ép kiểu số trong C như chuyển int sang string trong c, chuyển float sang string trong C tuỳ theo định dạng mà chúng ta chỉ định trong hàm.

Ví dụ cụ thể:

#include <stdio.h>

int main(void) {
int num1 = 88;
float num2 = 10.8;

//chuyển int sang string trong C
char target1[100]; // Đảm bảo đủ kích thước cho chuỗi kết quả
sprintf(target1, "%d\n", num1);
printf("%s", target1);

//chuyển float sang string trong C
char target2[100]; // Đảm bảo đủ kích thước cho chuỗi kết quả
sprintf(target2, "%f\n", num2);
printf("%s", target2);

return 0;
}

Kết quả:

88
10.800000

Trong các ví dụ trên, chúng ta sử dụng sprintf() để chuyển các số nguyên hoặc số thực tahnhf dãng chuỗi và lưu kết quả vào mảng target. Hàm sprintf hoạt động giống như printf, nhưng thay vì in ra màn hình, nó lưu kết quả vào chuỗi.

Một điểm cần lưu ý là bạn phải cung cấp đủ kích thước cho mảng target để chứa chuỗi kết quả, tránh tràn bộ nhớ.

Chuyển Số Nguyên hoặc Số Thực Bất Kỳ Thành Chuỗi | hàm snprintf

Nếu bạn muốn chuyển số nguyên hoặc số thực bất kỳ thành chuỗi mà không cần quan tâm đến định dạng số sau dấu thập phân, bạn có thể sử dụng hàm snprintf và đặt độ dài của chuỗi đầu ra là 0. Hàm snprintf sẽ trả về độ dài của chuỗi đầu ra mà không cần ghi dữ liệu vào chuỗi. Dưới đây là ví dụ:

#include <stdio.h>

int main() {
double so_thuc = 3.14159;
char chuoi[20]; // Đảm bảo đủ kích thước cho chuỗi kết quả

int do_dai = snprintf(chuoi, 0, "%f", so_thuc);
char chuoi_ket_qua[do_dai + 1]; // +1 cho ký tự null kết thúc chuỗi

snprintf(chuoi_ket_qua, do_dai + 1, "%f", so_thuc);

printf("Chuỗi kết quả: %s\n", chuoi_ket_qua);
return 0;
}

Trong ví dụ này, chúng ta sử dụng snprintf hai lần. Lần đầu để tính độ dài của chuỗi kết quả (do_dai) và lần thứ hai để chuyển đổi số thực thành chuỗi với độ dài đúng.

Kết quả:

Chuỗi kết quả: 3.141590

Chuyển Số Thành Chuỗi Với Độ Chính Xác Xác Định | hàm snprintf

Khi bạn muốn chuyển số thực thành chuỗi với độ chính xác xác định sau dấu thập phân (số lẻ) trong C, bạn có thể sử dụng hàm snprintf với định dạng chuỗi. Dưới đây là ví dụ:

#include <stdio.h>

int main() {
double so_thuc = 3.14159;
char chuoi[20]; // Đảm bảo đủ kích thước cho chuỗi kết quả

int so_chu_so_sau_thap_phan = 2; // Độ chính xác 2 số sau dấu thập phân
snprintf(chuoi, sizeof(chuoi), "%.*lf", so_chu_so_sau_thap_phan, so_thuc);

printf("Chuỗi kết quả: %s\n", chuoi);
return 0;
}

Trong ví dụ này, chúng ta sử dụng định dạng chuỗi "%.*lf" để chỉ định số lượng chữ số sau dấu thập phân. Chúng ta cũng cung cấp độ chính xác thông qua biến so_chu_so_sau_thap_phan. Kết quả sẽ được định dạng với độ chính xác theo yêu cầu của bạn.

Kết quả:

Chuỗi kết quả: 3.14

Chuyển int sang string trong C | hàm itoa()

Hàm itoa() có tác dụng chuyển một số nguyên int thành một chuỗi string trong C . Cơ chế của nó là thêm ký tự kết thúc chuỗi \0 vào cuối số chỉ định và biến số đó thành chuỗi.

Lưu ý rằng itoa() không phải là một hàm chuẩn trong C, và nó có thể không hoạt động trong một số môi trường lập trình C.

Cú pháp của hàm itoa() để chuyển số nguyên thành chuỗi trong C như sau:

itoa (num, target, base) ;

Trong đó

  • num là số nguyên cần chuyển thành chuỗi
  • target là chuỗi đích để chứa num sau khi chuyển thành chuỗi
  • base là cơ số chuyển đổi, nhằm xác định một giá trị số nguyên, chuyển đổi nó thành một giá trị cơ bản và lưu trữ nó trong một bộ đệm. Nếu cơ số là 10 và giá trị là âm, thì chuỗi kết quả được đặt trước dấu trừ ( -).

Cách sử dụng hàm itoa() để chuyển số thành chuỗi trong C đơn giản như ví dụ sau đây:

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

int main(void)
{
int number,l;
char string[20];

printf("Enter a number: ");
scanf("%d", &number);

itoa(number,string,10);

printf("String value = %s\n", string);

return 0;
}

Kết quả:

>>Enter a number: 15
String value: 15

Tổng kết

Việc chuyển số thành chuỗi và ngược lại là một phần quan trọng của lập trình, đặc biệt là khi bạn cần giao tiếp với các tệp tin, giao diện người dùng, hoặc cơ sở dữ liệu. Trong ngôn ngữ lập trình C, bạn có các công cụ như sprintf, snprintfitoa để thực hiện việc này một cách hiệu quả. Hãy luôn kiểm tra và xử lý đặc biệt cho trường hợp đặc biệt, như tràn bộ nhớ hoặc độ chính xác số lẻ, để đảm bảo tính an toàn và đáng tin cậy của ứng dụng của bạn.

URL Link

https://laptrinhcanban.com/c/lap-trinh-c-co-ban/chuoi-string-trong-c/chuyen-so-thanh-chuoi-trong-c/

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME  › >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.