尝试从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 - %x\n", buf[i], buf[i]);
printf(buf);
}
打开&#34; r&#34;给出相同的结果。我如何阅读撇号作为它的单个字符?谢谢!
答案 0 :(得分:1)
将buf [i]转换为unsigned char - 正确读取字符 - 但是在打印时 - 因为它是负数 - 它被扩展为int然后被设置为unsigned int所以你看到ffffff92 - 转换为unsigned应该正确显示值
=ARRAYFORMULA(match(vlookup(C24, 'age range'!$A1:$B4, 2),vlookup(heba_immediate_family!D2:D19,'age range'!$A1:$B4,2),1))
输出
#include<cstdio>
int main() {
char ch = static_cast<char>(0x92);
printf("%c - %x/%x\n", ch,ch,static_cast<unsigned char>(ch));
return 0;
}