putchar() 可以打印一个整数吗?

标签 c file-io integer output putchar

如何仅在 putchar() 的帮助下打印整数。我想在不使用外部存储的情况下做到这一点。
这个问题在去年的一次采访中被问到。

最佳答案

在面试中遇到模糊的要求时,表达您的假设是个好主意。

我认为关于只能使用 putchar 的要求意味着它是我唯一可以调用的库函数。我还假设“无外部存储”意味着我无法明确创建缓冲区。如果面试官同意我的假设,我会继续:

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    if (n / 10 != 0)
        pr_int(n / 10);
    putchar((n % 10) + '0');
}

如果面试官随后评论说 n = -n; 会因 INT_MIN 而失败,如下所述,那么我会将其重写为:

void pr_uint(unsigned int n) {
    if (n / 10 != 0)
        pr_uint(n / 10);
    putchar((n % 10) + '0');
}

void pr_int(int n) {
    if (n < 0) {
        putchar('-');
        n = -n;
    }
    pr_uint((unsigned int) n);
}

关于putchar() 可以打印一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975780/

相关文章:

Java最左二分查找

c - 为什么在 main() 函数的起始行之后声明变量会导致错误?

c - 我的循环在多线程中无法正常运行

c - 为什么我们不能在 C 编程语言的结构中声明一个静态变量?

c - main() 和 start_routine() 中的线程 ID 不同 - Pthread

java - Java如何从文本文件中提取数据

c++ - 为什么::feof() 不同于::_eof(::fileno())?

c# - 如何将文件重命名为在 C# 中万无一失的唯一名称?

C - 获取输入类型枚举

c++ - 将原始数组初始化为一个值