文字列にスペースを入れる方法
Posted: 2014年10月12日(日) 15:24
入力された変数を32bit表記の文字列にし、左にシフトしていくプログラムコードを作っています。
現在出力した時に
(例) 変数の値が5の場合
00000000000000000000000000000101
00000000000000000000000000001010
上記のような出力になりますがこれを
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00001010
8bitずつに設定した出力方法にしたいです。
ループ処理の回数から9を割って出せばいいのかと考えていますが答えが出ません。教えて頂けないでしょうか?
#include<stdio.h>
void sub(unsigned int a, char *pbuf);
void main(void)
{
char a[33];
int c = 0;
int d = 0;
scanf_s("%d", &c);
sub(c, a);
printf("%s\n", a);
for (d = 0; d <= 31; d++)
{
c = (c << 1);
sub(c, a);
printf("%s\n", a);
}
}
void sub(unsigned int a, char *pbuf)
{
int amari = 0;
int i;
for (i = 32; i >= 0; i--)
{
if (a < 1)
{
pbuf = '0';
}
else
{
amari = a % 2;
a = a / 2;
}
if (amari == 1)
{
pbuf = '1';
}
else
{
pbuf = '0';
}
}
pbuf[33] = '\0';
}
現在出力した時に
(例) 変数の値が5の場合
00000000000000000000000000000101
00000000000000000000000000001010
上記のような出力になりますがこれを
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00001010
8bitずつに設定した出力方法にしたいです。
ループ処理の回数から9を割って出せばいいのかと考えていますが答えが出ません。教えて頂けないでしょうか?
#include<stdio.h>
void sub(unsigned int a, char *pbuf);
void main(void)
{
char a[33];
int c = 0;
int d = 0;
scanf_s("%d", &c);
sub(c, a);
printf("%s\n", a);
for (d = 0; d <= 31; d++)
{
c = (c << 1);
sub(c, a);
printf("%s\n", a);
}
}
void sub(unsigned int a, char *pbuf)
{
int amari = 0;
int i;
for (i = 32; i >= 0; i--)
{
if (a < 1)
{
pbuf = '0';
}
else
{
amari = a % 2;
a = a / 2;
}
if (amari == 1)
{
pbuf = '1';
}
else
{
pbuf = '0';
}
}
pbuf[33] = '\0';
}