0
我正在研究一個小項目來練習C++中的I/O文件,但我無法弄清楚這個問題。我想編寫和算法,在文本文件中按字母順序重新排列單詞(最好是氣泡排序)。這是我到目前爲止如何從文本文件寫入數組和從數組寫入文本文件?
ifstream file("lab01.txt");
ofstream fileOut("lab01_out.txt");
char s[20][10];//variable for copying the words
//check if file was oppened
if (!file.is_open()) {
cout << "Error, file was not oppened!" << endl;
return -1;
}
//copy words from file to 2d array
for (int i = 0; i < 20; i++)
file >> s[i];
char check[1];
//bubble sort
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 18 - i; j++) {
if (strcmp(s[j], s[j + 1]) > 0) {
strncpy_s(check, s[j], _TRUNCATE);//if not truncated error "buffer to small"
strncpy_s(s[j], s[j + 1], _TRUNCATE);
strncpy_s(s[j + 1], check, _TRUNCATE);
}
}
}
//printing array to output file and to console.
for (int i = 0; i < 20; i++) {
cout << s[i] << endl;
fileOut << s[i] << endl;
}
//closing files.
file.close();
fileOut.close();
問題是,這是我的輸出文件的樣子。我得到這些符號而不是字... enter image description here
任何幫助將不勝感激!
聽起來好像您可能需要學習如何使用調試器來遍歷代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
***我正在一個小項目來練習C++中的I/O文件***如果你真的這樣做,我的建議是退出使用char數組而不是std :: string。 – drescherjm
對於初學者,我會將'char check [1];'更改爲'char check [10];'。 –