C++:读取字符是不正确的
C++: Reading a character is incorrect
在C++中尝试从文本文件读取字符时遇到一个奇怪的问题。当它找到一个撇号(十六进制92(时,它会将其读取为多个字符。对于字符串"它是",我得到这个:
i - 69
t - 74
’ - ffffff92
s - 73
it’s
这是代码:
{
FILE* fp = fopen("word.txt", "rb");
char buf[111];
fscanf(fp, "%s", buf);
for (int i = 0; i < strlen(buf); ++i)
printf("%c - %xn", buf[i], buf[i]);
printf(buf);
}
打开为"r"会得到相同的结果。我怎么能把撇号读成单个字符呢?谢谢
将buf[i]强制转换为无符号字符-字符读取正确-但在打印时-由于它是负数-它被扩展为int,然后大小写为无符号int,因此您可以看到ffffffff 92-强制转换为未符号字符应能正确显示值
#include<cstdio>
int main() {
char ch = static_cast<char>(0x92);
printf("%c - %x/%xn", ch,ch,static_cast<unsigned char>(ch));
return 0;
}
输出
$ ./test
� - ffffff92/92
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 我是否不正确地集中了这些字符数组?
- C++:读取字符是不正确的
- 字符串数组C++中的字符识别不正确
- 字符指针的长度使用 strlen() 不正确
- freopen和fwprintf将不正确的宽字符写入TXT文件
- 从堆栈中读取字符后,如何修复不正确的文件输出
- 查找数组中所有正确和不正确的字符
- 使用 const 指针的 C 样式字符返回不正确的结果
- 数组的第一个字符填充了不正确的数据C++
- 将符号分配给字符或字符串不正确
- getline() 获取不正确的字符
- 日语系统中的字符转换不正确
- 字符/int相等计算不正确
- 文件中的字符不正确
- Win32 编辑打印不正确的字符