gpt4 book ai didi

c - 如何在 c 中打印字符的十进制表示形式?

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:53 24 4
gpt4 key购买 nike

我想弄清楚如何以二进制形式打印字符的 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", 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;
}

最佳答案

%c格式字符串将始终解释相应的 printf作为字符的参数。在这种情况下,它可能不是您想要的。

printf("ASCII in BIN: %d\n", myChar);

会打印出myChar的ascii码点只需告诉 printf将其视为数字。

如果您想打印出 toBinary 返回的字符串函数,你可以用

printf("ASCII in BIN: %s\n", toBinary(myChar));

各种 % 都有很好的引用代码及其含义 here .


但是,还值得注意的是,您的 toBinary功能可能不会做你想要的。这个循环条件:

for (int i = sizeof(binaryValue); i >= 0; ++i) 

将从 sizeof(int) 开始并计数直到用完整数,然后停止,因为 INT_MAX + 1 == INT_MIN .因为你正在使用 i作为数组索引,这几乎肯定会使您的程序崩溃。

您还需要确保使用 '\0' 终止您生成的字符串,因为这就是后续调用 printf 的方式将识别字符串已结束。

并且,如其他答案中所述,您的 toBinary实现还返回一个指向内存地址的指针,该地址将在 toBinary 时自动删除。返回。

关于c - 如何在 c 中打印字符的十进制表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com