下面的代碼給出了一個非常奇怪的結果時:奇怪的ASCII響應(中國)試圖複製的代碼塊strlwr 13.12
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("f1.in");
ofstream g("f1.out");
char sir[255];
int i;
char strlwr(char sir[]) //if void nothing changes
{
int i = 0;
for (i = 0; sir[i] != NULL; i++) {
sir[i] = tolower(sir[i]);
}
return 0; //if instead of 0 is 1 it will kinda work , but strlwr(sir) still needs to be displayed
}
int main()
{
f.get(sir, 255);
g << sir << '\n'; // without '\n' strlwr will no more maters
g << strlwr(sir);
g << sir;
return 0;
}
f1.in:
JHON HAS A COW
f1.out:
䡊乏䠠十䄠䌠壞
樳湯栠獡慍撓睯
僅當我使用CAPS時才顯示此項。
我在Ubuntu 14,歐洲版本上使用Code :: Blocks 13.12。
我很想知道它爲什麼顯示這個。
我很想知道它是否給你同樣的東西。
'f1.in'的內容是什麼?這聽起來可能是[mojibake]的結果(https://en.wikipedia.org/wiki/Mojibake)。 (即文本是ASCII碼,但是您的終端或輸出解析器認爲它是UTF-8) – 2014-10-29 14:00:07
錐體是「JHON HAS COW」,全部大寫,結果顯示在f1.out中。我認爲ASCII值會改變,但我不知道程序中的位置,爲什麼如果我刪除'\ n'(endl),事情就不會再發生了。 Mojibake可能與此有關,但我不認爲這是問題所在。 – George 2014-10-29 15:42:59
你用什麼來查看輸出? '貓f1.out'或使用文本編輯器? – 2014-10-29 17:18:13