私は数値のバイナリ表現を与えるC関数を書こうとしていますn
。私が持っている関数は、数値を正しく表示します。Cの内部再帰関数から文字列配列に追加する方法
#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);
}
はこれを行うにはよりエレガントな方法はありますか:しかし、私は、文字列配列word
が印刷されているのと同じデータで更新されたいですか?私のコードで何が間違っていますか?
printbitでは、wは宣言されていません。 – Ishmeet