📜  如何将给定的数字转换为字符数组(1)

📅  最后修改于: 2023-12-03 15:38:46.301000             🧑  作者: Mango

如何将给定的数字转换为字符数组

在程序开发过程中,我们可能会遇到需要将一个数字转换为字符数组的情况,比如需要将一个数字转换为字符串进行输出或者存储。在本文中,我们将介绍如何将给定的数字转换为字符数组。

方式一:利用sprintf函数转换

利用sprintf函数可以将数字转换为字符串,我们可以将转换后的字符串逐个赋值到一个字符数组中,从而实现将数字转换为字符数组的操作。

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

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

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

    printf("Convert number %d to string: %s\n", num, str);

    return 0;
}
代码片段
int num = 12345;
char str[10];
sprintf(str, "%d", num);
方式二:利用itoa函数转换

itoa函数可以将int类型的数字转换为字符串,需要注意的是,itoa函数在标准C中并不是一个标准函数,其可移植性存在一定问题。

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

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

    itoa(num, str, 10);

    printf("Convert number %d to string: %s\n", num, str);

    return 0;
}
代码片段
int num = 12345;
char str[10];
itoa(num, str, 10);
方式三:手动转换

在实际开发中,我们也可以手动将数字转换为字符数组,具体过程如下:

  1. 判断数字是正数还是负数
  2. 对数字进行取余和除法操作,将每一位数字分别转换为字符
  3. 将字符数组翻转(因为我们是从最低位开始进行转换操作的)
#include <stdio.h>

void int_to_str(int num, char *str) {
    int i = 0, j, k, is_negative = 0;

    if (num < 0) {
        is_negative = 1;
        num = -num;
    }

    while (num) {
        str[i++] = num % 10 + '0';
        num /= 10;
    }

    if (i == 0) {
        str[i++] = '0';
    }

    if (is_negative) {
        str[i++] = '-';
    }

    str[i] = '\0';

    for (j = 0, k = i - 1; j < k; j++, k--) {
        str[j] ^= str[k];
        str[k] ^= str[j];
        str[j] ^= str[k];
    }
}

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

    int_to_str(num, str);

    printf("Convert number %d to string: %s\n", num, str);

    return 0;
}
代码片段
void int_to_str(int num, char *str) {
    int i = 0, j, k, is_negative = 0;
    //...
}

int num = -12345;
char str[10];
int_to_str(num, str);