C 语言 - 数据处理 - 数值转换成字符串(4 大类方式)

C 语言 - 数据处理 - 数值转换成字符串(4 大类方式)

一、使用 sprintf 函数

1、基本介绍

sprintf 函数用于将格式化的数据写入字符串

int sprintf(char *str, const char *format, ...);

参数说明str目标字符串的指针format格式化字符串,用于指定输出的格式…可选参数,用于替换格式化字符串中的占位符2、演示

将整数转换为字符串

#include

int main() {

int num = 12345;

char numStr[20];

sprintf(numStr, "%d", num);

printf("字符串: %s\n", numStr);

return 0;

}

# 输出结果

字符串: 12345

将多个整数转换为字符串

#include

int main() {

int num1 = 12345;

int num2 = 67890;

char numStr[20];

sprintf(numStr, "%d %d", num1, num2);

printf("字符串: %s\n", numStr);

return 0;

}

# 输出结果

字符串: 12345 67890

将浮点数转换为字符串

#include

int main() {

double num = 3.14159;

char numStr[20];

sprintf(numStr, "%.2f", num);

printf("字符串: %s\n", numStr);

return 0;

}

# 输出结果

字符串: 3.14

二、使用 snprintf 函数、sprintf_s 函数

1、基本介绍

snprintf 函数用于将格式化的数据写入字符串,与 sprintf 函数类似,但可以指定写入的最大字符数,避免缓冲区溢出,是更加安全的函数

int snprintf(char *str, size_t size, const char *format,...);

参数说明str目标字符串的指针size目标字符串的最大长度format格式化字符串,用于指定输出的格式…可选参数,用于替换格式化字符串中的占位符sprintf_s 函数是微软提供的与 snprintf 函数类似,用于将格式化的数据写入字符串,与 sprintf 函数类似,但可以指定写入的最大字符数,避免缓冲区溢出,是更加安全的函数

int sprintf_s(char *str, size_t size, const char *format,...);

参数说明str目标字符串的指针size目标字符串的最大长度format格式化字符串,用于指定输出的格式…可选参数,用于替换格式化字符串中的占位符2、演示

使用 snprintf 函数

#include

int main() {

int num1 = 12345;

int num2 = 67890;

char numStr[20];

sprintf_s(numStr, sizeof(numStr), "%d %d", num1, num2);

printf("字符串: %s\n", numStr);

return 0;

}

# 输出结果

字符串: 12345 67890

使用 sprintf_s 函数

#include

int main() {

double num1 = 1.234;

double num2 = 5.678;

char numStr[20];

snprintf(numStr, sizeof(numStr), "%.2f %.2f", num1, num2);

printf("字符串: %s\n", numStr);

return 0;

}

# 输出结果

字符串: 1.23 5.68

三、使用 itoa 函数、_itoa 函数、_itoa_s 函数

1、基本介绍

itoa 函数用于将整数转换为字符串

char* itoa(int value, char*string, int radix);

参数说明value要转换的整数string目标字符串radix进制数_itoa 函数用于将整数转换为字符串,相比于 itoa 函数更加安全

char* _itoa(int value, char*string, int radix);

参数说明value要转换的整数string目标字符串radix进制数_itoa_s 函数用于将整数转换为字符串,相比于 _itoa 函数更加安全

errno_t _itoa_s(int value, char*string, size_t size, int radix);

参数说明value要转换的整数string目标字符串size目标字符串的最大长度radix进制数2、演示

使用 itoa 函数

#include

#include

int main() {

int num = 12345;

char str[20];

itoa(num, str, 10);

printf("字符串: %s\n", str);

return 0;

}

# 输出结果

字符串: 12345

使用 _itoa 函数

#include

#include

int main() {

int num = 12345;

char str[20];

_itoa(num, str, 10);

printf("字符串: %s\n", str);

return 0;

}

# 输出结果

字符串: 12345

使用 _itoa_s 函数

#include

#include

int main() {

int num = 12345;

char str[20];

_itoa_s(num, str, sizeof(str), 10);

printf("字符串: %s\n", str);

return 0;

}

# 输出结果

字符串: 12345

四、手动实现转换

1、具体实现

#include

void reverse(char* str) {

int i = 0;

int j = strlen(str) - 1;

while (i < j) {

char temp = str[i];

str[i] = str[j];

str[j] = temp;

i++;

j--;

}

}

void numToStr(int num, char* str) {

// 判断是否为负数,0 为非负数(正数或 0),1 为负数

int isNegative = 0;

// 如果是负数

if (num < 0) {

isNegative = 1;

num = -num; // 转为正数处理

}

int i = 0;

do {

str[i++] = num % 10 + '0';

num /= 10;

} while (num > 0);

if (isNegative) {

str[i++] = '-';

}

str[i] = '\0';

reverse(str);

}

int main() {

int num1 = 12345;

char num1Str[20];

numToStr(num1, num1Str);

printf("字符串: %s\n", num1Str);

int num2 = -6789;

char num2Str[20];

numToStr(num2, num2Str);

printf("字符串: %s\n", num2Str);

return 0;

}

# 输出结果

字符串: 12345

字符串: -6789

2、+ '0' 的作用

str[i++] = num % 10 + '0'; 这行代码的作用是将数字转换为对应的字符,即将数字 0 ~ 9 转换为对应的字符 '0' ~ '9'

在 ASCII 编码中,字符 '0' 的 ASCII 码是 48,字符 '1' 的 ASCII 码是 49,依此类推,字符 '9' 的 ASCII 码是 57

因此,数字 0 转换为字符 '0' 的方法如下

char num_char = 0 + '0';

类似地,数字 5 转换为字符 '5' 的方法如下

char num_char = 5 + '0';

相关发现

Apple Pencil新功能:充电速度与使用技巧揭晓,不容错过!
极度讨厌java:为何这门编程语言如此让人心生厌恶?
beat365官网地址下载

极度讨厌java:为何这门编程语言如此让人心生厌恶?

🌼 07-15 🌻 5767
无线产品复位操作
bst365app

无线产品复位操作

🌼 07-07 🌻 2986
财务报销必备:2024年最佳10款管理App
365是正规平台吗

财务报销必备:2024年最佳10款管理App

🌼 08-05 🌻 3302