【发布时间】:2012-09-02 20:16:02
【问题描述】:
我有一个任务,我需要在不使用 printf、putchar 等的情况下在 C 中打印一个整数。不允许包含任何头文件。除了我写的任何东西都没有函数调用。我有一个我正在使用的函数 my_char (可能是错误的),但它会打印出一个字符。我目前有以下代码向后打印数字。不是在寻找答案。只是在寻找一些方向,一些帮助,也许我完全看错了。
void my_int(int num)
{
unsigned int i;
unsigned int j;
char c;
if (num < 0)
{
my_char('-');
num = -num;
}
do
{
j = num % 10;
c = j + '0';
my_char(c);
num = num/10;
}while(num >0);
}
【问题讨论】:
-
一种可能性是使用递归。另请注意,如果
num == INT_MIN(至少在典型的 2 补码机器上),您的代码将失败。 -
忘了说,对不起,也不允许使用递归(我知道,令人沮丧)
-
如果字面上不允许包含任何头文件,则不能将其打印到标准输出 - 即使是在头文件中声明的“写入”系统调用(将使用内联汇编访问) ...
-
也许stackoverflow.com/questions/468262/… 会有所帮助。 :)
-
@user1658816 你可以使用文本编辑器和编译器,还是应该通过直接用针磁化你的硬盘来做到这一点?