【发布时间】:2015-07-10 01:30:25
【问题描述】:
我正在编写一个操作系统,我需要能够打印添加的变量。我有一个可用的 atoi 函数,所以我将它反转给我一个 itoa 函数。没有办法访问空闲内存,所以我需要弄清楚位数才能创建适当大小的 char 数组。我想我需要除以 10 才能得到它,然后将值模数到正确的位置。到目前为止,这是我的 c 代码:
char* itoa(int res) {
int size = 0;
int t = res;
while(t / 10 != 0) {
t = t/10;
size ++;
}
char ret[size+1];
ret[size] = '\0';
t = res;
int i = size - 1;
while(i > 0) {
ret[i] = t % 10;
t = t/10;
i--;
}
return ret;
}
截至目前,它什么也没打印。它有什么问题?
【问题讨论】:
-
好吧,一方面,您返回的是临时值。
-
否定
int失败。 -
什么意思? - @imallett
-
char ret[]在函数完成后不再可用。返回指向它的指针不起作用。 -
在开始编写操作系统之前,您不应该了解基本的 C 概念吗?