[英]Program to convert octal to binary number system
我是 c 编程语言的初学者,这几天我正在训练做一些 c 练习,我被困在一些转换练习中:所以这就是我所做的
#include <stdio.h>
#include <string.h>
int main() {
int num[8] = {
0,
1,
2,
3,
4,
5,
6,
7
};
long long binary, octal, tempoctal;
int last, i, A, tempi;
char hex[9] = {
'000',
'001',
'010',
'011',
'100',
'101',
'110',
'111'
};
int bex[10];
A = 0;
printf("enter an octal number: ");
scanf("%lld", & octal);
tempoctal = octal;
while (tempoctal != 0) {
last = tempoctal % 10;
for (i = 0; i < 8; i++) {
if (num[i] == last) {
tempi = i;
bex[A] = tempi;
}
}
A++;
tempoctal /= 10;
}
printf("\nthe is %s", bex);
return 0;
}
所以我只想知道为什么当我想打印 bex 数组时,我在控制台上出现错误,请在此处输入图像描述。 虽然我知道解决方案,但我想以我自己的方式去做。
回答你的问题。 bex
被声明为int bex[10]
,整数数组。 printf("%s"...
需要一个字符串,而不是一个 int 数组。
字符串通常是一个字符数组char bex[10]
。 Char 是单个字节,而 int 通常是 4 字节长。 所以,你看到那里的区别。 在您的示例中,您修改了“int”的最低字节,将其他 3 保留为“0”。
可打印字符有相应的代码。 例如,'0' 的字符在 asccii 编码中的代码为48
。 所有其他表示数字的字符都有连续的代码 (48..57)。 这就是printf
和其他服务在看到字节中的48
时知道要打印什么的方式。
'c' 中的字符串以杂散0
结尾,因此printf
知道在哪里停止读取字符。
因此,如果要将“bex”打印为字符串,则需要将其创建为字符串。 例如
char bex[10];
for (i=0; i <8; i++)
bex[A++] = '0' + i; // code of '0' + a number
bex[A] = 0; // string terminator
只需确保您的 'A' 始终小于 '8' 以避免数组溢出(字符串长度为 9 加上一个字符作为终止符。现在您可以这样做了。
printf("%s", bex);
您必须在程序的 rest 上工作,因为它在当前的 state 中没有任何用处,但这应该可以帮助您开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.