獲取奇怪的問題,嘗試從C++中的文本文件中讀取字符。當它找到一個撇號(十六進制92)時,它將其讀取爲多個字符。對於字符串「這是」我得到這個:C++:讀取字符不正確
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);
}
開幕爲「R」給出了相同的結果。我怎樣才能讀撇號作爲它的單個字符?謝謝!
這看起來更像是C.這是C 2 – Ron
這是C++,但它也會在C中編譯。我使用流獲得相同的結果。 – UserX
如果'char'被簽名(可能),它將在可變參數函數中被提升爲'int'時得到符號擴展。將簽名值打印爲無符號可能會導致意外輸出。 –