【发布时间】:2017-01-31 00:09:30
【问题描述】:
我正在尝试编写一个 C 函数,它将为我提供数字 n 的二进制表示。我拥有的功能可以正确打印数字;但是我希望字符串数组 word 使用与正在打印的相同数据进行更新:
#include <stdio.h>
#include <stdlib.h>
#define MAXBIN 100
void printbitsrec(unsigned n, int n_bits, char *w)
{
if (n_bits-- > 0) {
printbitsrec(n >> 1, n_bits, w);
if (n & 1) {
printf("1");
*w++ = '1';
}
else {
printf("0");
*w++ = '0';
}
}
}
void printBits(unsigned n, int n_bits, int ret)
{
char word[MAXBIN];
printbitsrec(n, n_bits, &word[0]);
word[n_bits + 1] = '\0';
if (ret)
printf("\n");
printf("word = %s\n", word);
}
int main() {
printBits(2, 4, 1);
}
有没有更优雅的方法来做到这一点?我的代码做错了什么?
【问题讨论】:
-
在 printBits 中,w 未声明。