算法邏輯
- 處理負數:記號、取絕對值;
- 循環取模 10 得到各位數字(低位在前);
- 存入字符數組;
- 逆序輸出或反轉數組。
代碼實現
#include <stdio.h>
void intToStr(int n, char *buf) {
int i = 0, sign = n;
if (n < 0) n = -n;
do {
buf[i++] = n % 10 + '0';
} while (n /= 10);
if (sign < 0) buf[i++] = '-';
buf[i] = '\0';
// 反轉
for (int l = 0, r = i - 1; l < r; ++l, --r) {
char t = buf[l]; buf[l] = buf[r]; buf[r] = t;
}
}
int main() {
char s[20];
intToStr(-12345, s);
printf("%s\n", s); // -12345
return 0;
}
關鍵點
do-while 保證 0 也能輸出 "0";
- 字符轉換
+ '0';
- 標準庫
sprintf(buf, "%d", n) 或 itoa (非標準) 生產首選。