C 数字转换为字符串

在 C 语言中,如果想要将一个数字转换为一个字符串,常用的有以下 3 种方式。

  • 使用 sprintf() 函数。
  • 使用 snprintf() 函数(推荐)。
  • 使用 itoa() 函数(非标准)。

使用 sprintf() 函数

在 C 语言中,我们可以使用 sprintf() 函数来将一个数字格式化写入到指定的字符数组中。

语法:

sprintf(str, format, num)

说明:

sprintf() 函数接收以下 3 种参数。

  • str(char *):用于保存结果。
  • format(const char *):是预定义好的格式。
  • num:是一个数字。

示例 1:sprintf() 将整数转为字符串

#include <stdio.h>

int main(void)
{
    int num = 666;
    char str[10];

    sprintf(str, "%d", num);
    puts(str);

    return 0;
}

运行结果如下。

666

示例 2:sprintf() 将浮点数转换为字符串

#include <stdio.h>

int main(void) 
{
    double pi = 3.14159;
    char str[20];

    sprintf(str, "%.2f", pi);        // 保留两位小数
    printf("浮点数:%.5f\n", pi);
    printf("字符串:%s", str);

    return 0;
}

运行结果如下。

浮点数:3.14159
字符串:3.14

分析:

sprintf() 函数的使用非常灵活,它不仅可以用于处理不同类型的数字,还可以进行格式化控制。但需要注意的是,如果提供的 “字符数组 str 的空间” 不足以存储 “格式化后的字符串(包括结尾的空字符 '\0')” ,则可能会导致缓冲区溢出。

使用 snprintf() 函数(推荐)

snprintf() 函数是 sprintf() 的更安全版本。它接受一个额外的参数来指定目标字符数组的最大大小,从而防止缓冲区溢出。

语法:

snprintf(str, size, format, num)

说明:

snprintf() 函数接收以下 3 种参数。

  • str(char *):用于保存结果。
  • size(size_t):目标字符数组的最大大小(包括结尾的空字符 '\0')。
  • format(const char *):是预定义好的格式。
  • num:是一个数字。

示例 3:使用 snprintf() 将整数转换为字符串

#include <stdio.h>

int main(void) 
{
    int num = 12345;
    char str[10];

    int result = snprintf(str, sizeof(str), "%d", num);
    if (result >= sizeof(str)) 
    {
        printf("警告:字符串被截断!\n");
    }
    printf("原数字:%d\n", num);
    printf("字符串:%s", str);

    return 0;
}

运行结果如下。

原数字:12345
字符串:12345

示例 4:snprintf() 将浮点数转换为字符串

#include <stdio.h>

int main(void) 
{
    double num = 98.765;
    char str[15];

    snprintf(str, sizeof(str), "%.3f", num);
    printf("浮点数:%.5f\n", num);
    printf("字符串:%s", str);

    return 0;
}

运行结果如下。

浮点数:98.76500
字符串:98.765

分析:

想要将数字转换为字符串,我们更推荐使用 snprintf() 函数来实现。主要是因为它提供了缓冲区大小的控制,这样可以帮助我们编写更安全的代码。

使用 itoa() 函数(非标准)

在 C 语言中,我们还可以使用 itoa() 函数来将一个整数转换为一个字符串。其中,itoa 是 “int to ascii” 的缩写。

注意: itoa() 函数不是标准 C 语言的一部分,在某些编译器(如 gcc)中可能不可用。

语法:

itoa(num, str, n)

说明:

itoa() 函数接收以下 3 个参数。

  • num(int):是一个整数。
  • str(char *):是一个字符数组,用于保存结果。
  • n(int):表示多少进制,比如 10 表示十进制。

示例 5:itoa() 将数字转为字符串

#include <stdio.h>
#include <stdlib.h>
 
int main(void) 
{
    int num = 666;
    char str[10];

    itoa(num, str, 10);
    puts(str);

    return 0;
}

运行结果如下。

666

分析:

itoa() 函数只适用于将整数转换为字符串。不过由于它不是标准函数,因此不建议在需要跨平台兼容性的代码中使用。在实际项目开发中,我们应该优先考虑使用 sprintf() 或更安全的 snprintf()。

上一篇: C 随机数

下一篇: C 字符串转换为数字

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号