如何在c中打印字符的十进制表示?
我试图找出如何以二进制打印字符的ascii值。这是我到目前为止所做的,但它根本不起作用,我也不知道为什么。你们这些C巫师中有人能帮我吗如何在c中打印字符的十进制表示?,c,arrays,pointers,binary,C,Arrays,Pointers,Binary,我试图找出如何以二进制打印字符的ascii值。这是我到目前为止所做的,但它根本不起作用,我也不知道为什么。你们这些C巫师中有人能帮我吗 #include <stdio.h> int main(int argc, char** argv) { char myChar; printf("Enter a character:\n"); scanf("%c", &myChar); printf("Your character is %c\n",
#include <stdio.h>
int main(int argc, char** argv)
{
char myChar;
printf("Enter a character:\n");
scanf("%c", &myChar);
printf("Your character is %c\n", myChar);
printf("ASCII in BIN: %c\n", toBinary(myChar));
return 0;
}
char* toBinary(int decimalNumber)
{
char binaryValue[7] = "";
for (int i = sizeof(binaryValue); i >= 0; ++i)
{
int remainder = decimalNumber % 2;
decimalNumber = decimalNumber / 2;
binaryValue[i] = remainder;
}
return &binaryValue;
}
#包括
int main(int argc,字符**argv)
{
char-myChar;
printf(“输入字符:\n”);
scanf(“%c”和&myChar);
printf(“您的字符是%c\n”,myChar);
printf(“BIN中的ASCII:%c\n”,toBinary(myChar));
返回0;
}
字符*toBinary(整数小数)
{
字符二进制值[7]=“”;
对于(int i=sizeof(binaryValue);i>=0;++i)
{
整数余数=小数%2;
小数=小数/2;
二进制值[i]=余数;
}
返回值&二进制值;
}
%c
用于打印字符
而且,C中没有布尔类型,因此您可以将其更改为字符串,并将指向数组的指针传递给
printf(“%s”,pointer)
格式字符串将始终将相应的printf
参数解释为字符。在这种情况下,它可能不是你想要的
printf("ASCII in BIN: %d\n", myChar);
只需告诉printf
将其视为一个数字,即可打印出myChar
的ascii码点
如果要打印由toBinary
函数返回的字符串,可以使用
printf("ASCII in BIN: %s\n", toBinary(myChar));
各种%
代码及其含义都有很好的参考
但是,还值得注意的是,您的
toBinary
函数可能无法实现您想要的功能。此循环条件:
for (int i = sizeof(binaryValue); i >= 0; ++i)
将从sizeof(int)
开始计数,直到用完整数,然后仅因为int\u MAX+1==int\u MIN
而停止。因为您使用i
作为数组索引,这几乎肯定会使程序崩溃
您还需要确保使用'\0'
终止正在生成的字符串,因为后续调用printf
将通过这种方式识别字符串已结束
并且,如其他答案所述,
toBinary
实现还返回一个指向内存地址的指针,该地址将在toBinary
返回时自动删除。返回本地数组的地址
这既是不正确的返回类型(char**vs char*),也是一件不好的事情。您不能返回
binaryValue
的地址,因为它是toBinary
的本地地址,并且当函数退出时数组不再存在。i>=0和++i一起在for循环中?。。。那么OP如何修复它呢?请阅读更多的C教程。我不确定这是不是一个好地方来解释这样的事情。谢谢!我理解printf和for循环的错误所在。但是,如何修复我的toBinary
函数?它生成的字符串应该作为参数传入,而不是返回。这将解决立即删除的问题。此外,由于您需要二进制表示,并且sizeof以字节为单位,因此需要乘以8才能获得正确的位数。除此之外,还有我在回答中提到的东西,你的基本算法很好。
for (int i = sizeof(binaryValue); i >= 0; ++i)