我寫讀取數字的輸入文件,進行升序排序它們,並把它們打印輸出的代碼。打印輸出的唯一東西是一些非常怪異的符號。印刷怪異符號輸出文件,C++
這裏是我的代碼
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
int i, y, temp, num[20];
char file_nameI[21], file_nameO[21];
ofstream outfile;
ifstream infile;
cout << "Please enter name of input file: ";
cin >> file_nameI;
infile.open(file_nameI);
if (!infile)
{
cout << "Could not open input file \n";
return 0;
}
cout << "Please enter name of output file: ";
cin >> file_nameO;
outfile.open(file_nameO);
if (!outfile)
{
cout << "Could not open output file \n";
return 0;
}
for (i = 0; i < 20; i++)
{
y = i + 1;
while (y < 5)
{
if (num[i] > num[y]) //Correction3
{
infile >> temp;
temp = num[i];
num[i] = num[y];
num[y] = temp;
//y++; //Correction4
}
y++;
}
}
for (i = 0; i < 5; i++)
outfile << "num[i]:" << num[i] << "\n";
return 0;
}
這裏是我的輸入
6 7 9 0 40
這裏是輸出
„Ô,üþ 54
H|À°ÀzY „Ô,üþ 0
使用調試器。進入你的循環時'num'的元素是什麼? – mpiatek
輸出至少應包含「num [i]」。根據Occam的Razor的說法,你聲稱不是這個事實表明這不是你正在使用的實際代碼,或者你正在查看錯誤的文件。此外,由於顯示的代碼顯然使用未初始化的變量,因此這已經是未定義的行爲,並且所有投注都關閉。學習如何使用調試器,並逐個執行代碼,檢查所有變量的值。 –
你真的應該拆分排序和文件操作。將文件讀入數組,對數組進行排序,然後輸出。這使得這個問題變得更容易。 – NathanOliver