将数字转换为具有多个参数的字符串

标签 c type-conversion atoi

我想将基数n的数字x转换为字符串并将其存储在str中。 str 的最大尺寸为 ma​​x。在这个程序中我不想使用任何库函数。如果达到数组的最大大小,该函数应返回 false,并且数组内容应为未定义。

该函数的原型(prototype)如下所示:

bool num2str(int x, char *str, unsigned n, unsigned max);

我将如何去做这项工作?我无法理解其背后的算法。

我还需要检查n的值,但我已经这样做了:

bool num2str(int x, char *str, unsigned n, unsigned max)
{
    assert(n >= 2 && n <= 36);
    return true;
}

但这就是我能做的。请帮忙。

最佳答案

让我们取一个以 10 为基数的数字:123456。现在让我们使用该数字和以 10 为基数重复应用模数和整数除法:

123456 mod 10 = 6
123456 div 10 = 12345

12345 mod 10 = 5
12345 div 10 = 1234

如您所见,按基数取模会提取最后一位数字,而按基数除整数会将数字上的数字向右移动。您可以对任何基地执行相同的操作。希望这个提示足够了。

关于将数字转换为具有多个参数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991708/

相关文章:

c - 如何在C中执行DLL中的线程

c - 从文本文件中逐行查找特定单词的出现次数

sql - 使用 SELECT TOP 时出现转换失败错误,但选择所有行时没有错误

c++ - 将字符串转换为 int (C++)

c++ - 如何制作一个非空终止的 c 字符串?

c++ - 无法通过 C++ 中的隐式转换找到运算符

string - 如何在不克隆字符串的情况下在 Rust 中构建灵活的多类型数据系统?

c - 在没有外部函数的情况下复制 atoi()

无法使用 atoi() 将 char 数字转换为 int

c - 标准 C 和现代编译器之间的差异