EDIT: Xin lỗi, tôi nên nhớ rằng máy này được quyết định là không chuẩn, đã cắm vào các libc
triển khai phi tiêu chuẩn khác nhau cho mục đích học tập ;-)
Như itoa()
thực sự là không chuẩn, như được đề cập bởi một số bình luận hữu ích, tốt nhất nên sử dụng sprintf(target_string,"%d",source_int)
hoặc (tốt hơn nữa, vì nó an toàn từ tràn bộ đệm) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)
. Tôi biết nó không hoàn toàn ngắn gọn hay thú vị như itoa()
, nhưng ít nhất bạn có thể Viết một lần, Chạy mọi nơi (tm) ;-)
Đây là câu trả lời cũ (đã được chỉnh sửa)
Bạn đã đúng khi tuyên bố rằng mặc định gcc libc
không bao gồm itoa()
, giống như một số nền tảng khác, do về mặt kỹ thuật nó không phải là một phần của tiêu chuẩn. Xem ở đây để biết thêm một chút. Lưu ý rằng bạn phải
#include <stdlib.h>
Tất nhiên bạn đã biết điều này, vì bạn muốn sử dụng itoa()
trên Linux sau khi sử dụng nó trên nền tảng khác, nhưng ... mã (bị đánh cắp từ liên kết ở trên) sẽ trông như sau:
Thí dụ
/* itoa example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i;
char buffer [33];
printf ("Enter a number: ");
scanf ("%d",&i);
itoa (i,buffer,10);
printf ("decimal: %s\n",buffer);
itoa (i,buffer,16);
printf ("hexadecimal: %s\n",buffer);
itoa (i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}
Đầu ra:
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110
Hi vọng điêu nay co ich!
sprintf(str, "%d", num)
? nó chậm hơn nhiều so vớiitoa
?