【发布时间】:2017-07-18 21:21:13
【问题描述】:
我正在编写一个读取数字输入文件的代码,按升序对它们进行排序,然后将它们打印到输出。唯一打印输出的是一些非常怪异的符号。
这是我的代码
#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的元素是什么? -
输出至少应该在某处包含“num[i]”。根据 Occam's Razor 的说法,您声称它不是表明这不是您正在使用的实际代码,或者您正在查看错误的文件。此外,由于显示的代码显然使用了未初始化的变量,这已经是未定义的行为,所有的赌注都被取消了。了解如何使用调试器,一次一行地单步调试代码,检查所有变量的值。
-
您确实应该将排序和文件操作分开。将文件读入数组,对数组进行排序,然后输出。这让这个问题变得容易多了。
-
从一个读取数组然后打印回来的程序开始。当你做对了,添加排序。
标签: c++ symbols into-outfile