c语言字符超过127,在C中处理超过127的char值

"博主在C编程中遇到了一个问题,当尝试打印或处理char数组中大于127的值时,出现了意料之外的结果。例如,使用printf("%c ", 128)会打印出替换字符FFFD,而不是预期的字符。在尝试手动赋值如char abc[] = {126, 128, ''}
摘要由CSDN通过智能技术生成

我对C编程非常陌生,并且在char数组中尝试赋值超过127(0x7F)时出现了一些问题。在我的程序中,我使用通用二进制数据,并且我不会遇到以%c或%d打印之前获取的字节流(例如,使用fopen或fgets,然后使用某些按位操作处理)的问题。

但如果我尝试从它的数值打印字符这样的:在C中处理超过127的char值

printf("%c\n", 128);

它只是打印FFFD(替换字符)。

下面是另一个例子:

char abc[] = {126, 128, '\0'}; // Manually assigning values

printf("%c", abc[0]); // Prints "~", as expected

printf("%c", 121); // Prints "y"

pritf("%c", abc[1]; // Should print "€", I think, but I get "�"

我有点困惑,因为我可以只打印低于128的每一个字符在这些方面。

我这样问的原因是因为我需要使用rand()函数生成(伪)随机字节序列。

下面是一个例子:

char abc[10];

srand(time(NULL));

abc[0] = rand() % 256; // Gives something between 00:FF ...

printf("%c", abc[0]); // ... but I get "�"

如果这是任何帮助,源代码是用UTF-8编码的,但改变编码不具有​​任何影响。

+0

我不明白你的意思是什么*'printf(“%c \ n”,128);'只是返回'FFFD'(替换字符)*函数'printf '返回打印的字符数。 –

+0

@WeatherVane对不起,我的意思是在屏幕上输出替换字符,而不是返回值。编辑 –

+0

您的程序之外的其他内容必须生成该“替换字符”。当我运行你的程序时,它打印一个值为'0x80'的字符。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值