检查数组中的某个字符是否是某个字符

标签 c

我正在生成一个随机数并检查包含的字符是否是某个字符(即 0xDB)。这似乎不是正确的方法,因为我的 if() 似乎总是 false 并转到 else。

我怎样才能实现这个目标?代码如下。谢谢!

if(buffer[randomNumber] == 0xDB) 
    count++;
else {
    buffer[randomNumber] = 0xDB;
    arrayChangeFlag++;
    count++;
}

最佳答案

缓冲区的类型是什么?

我猜它是signed char或隐式签名的char。在大多数实现中,有符号字符的范围是(-128,+127)。 0xDB 超出了该范围,因此相等性测试可能永远不会成立。

尝试将缓冲区类型更改为unsigned char,或将您的测试替换为:

 if((unsigned char)buffer[randomNumber] == 0xDB) 

 if(buffer[randomNumber] == (char)0xDB) 

关于检查数组中的某个字符是否是某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814214/

相关文章:

c - 反转字符串 C

C访问冲突写入位置scanf_s

c - 为什么字符串数组不区分数值而整数数组不显示字符?

c - 为 Teensy Atmega 32u4 实现 PI 控制

c - 指针指向字符串时没有输出

c - 为什么 select() 在我的代码中没有返回?

c - 如何正确地将汇编程序转换为shellcode?

c - 在 C 中将 double 表示为字符数组

c - 什么是在 C 中转换字符串的字节顺序的可移植方法

c - SQLite3 : update not working correctly?