1、使用 sprintf(推荐方法)
sprintf
是 C 标准库中的一部分(stdio.h
),可以用来将整数格式化为字符串。
#include <stdio.h>
int main() {
int num = 123;
char str[20]; // 确保缓冲区足够大以容纳字符串表示
sprintf(str, "%d", num); // 将整数格式化为字符串
printf("转换后的字符串: %s\n", str);
return 0;
}
2、使用 snprintf
(比 sprintf
更安全)
snprintf
与 sprintf
类似,但它可以指定输出缓冲区的最大大小,因此更安全,可以避免缓冲区溢出。
#include <stdio.h>
int main() {
int num = 123;
char str[20]; // 确保缓冲区大小足够
snprintf(str, sizeof(str), "%d", num); // 安全地将整数格式化为字符串
printf("转换后的字符串: %s\n", str);
return 0;
}
3、使用 itoa
一些 C 编译器(如 GCC 或 MSVC)提供非标准的 itoa 函数来将整数转换为字符串。然而,itoa
不是 C 标准的一部分,因此在不同的编译器中不一定可用。
#include <stdio.h>
#include <stdlib.h> // 对于 itoa,如果编译器支持
int main() {
int num = 123;
char str[20]; // 确保缓冲区足够大
itoa(num, str, 10); // 将整数转换为十进制字符串
printf("转换后的字符串: %s\n", str);
return 0;
}
4、循环实现手动转换
可以通过不断提取数字来手动实现转换过程。
#include <stdio.h>
void int_to_string(int num, char *str) {
int i = 0;
int is_negative = 0;
if (num == 0) {
str[i++] = '0';
str[i] = '\0';
return;
}
if (num < 0) {
is_negative = 1;
num = -num;
}
while (num) {
str[i++] = (num % 10) + '0'; // 将数字转换为字符
num /= 10;
}
if (is_negative) {
str[i++] = '-';
}
str[i] = '\0';
// 反转字符串
int start = 0;
int end = i - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
int num = -123;
char str[20];
int_to_string(num, str);
printf("转换后的字符串: %s\n", str);
return 0;
}