C ++文件I / O和指针

时间:2013-11-18 08:35:54

标签: c++ file header

我尝试创建一个使用输入文件'cardList.txt'的程序,其中包含:

Schmidt, Helga
Alvarez, Ruben
Zowkowski, Aaron
Huang, Sun Lee
Einstein, Beverly

我想用姓氏按字母顺序排序。

主:

#include <iostream>
#include <fstream>
#include <string>
#include "insertsortFunct.h"
using namespace std;

int main(void){
    ifstream inData;
    ofstream outData;
    const int listSize = 5;
    char cardList[listSize][25];
    instruct();
    openFile(inData, outData);
    buildList(cardList, inData);
    inData.close();
    sortList(cardList, listSize);
    cout << endl << "Your list is sorted" << endl;
    writeFile(cardList, outData);
    outData.close();
    return 0;
}

我在单独的文件中定义了这些函数:

#include "insertsortFunct.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;

void instruct(void){
    cout << "The program insertSort.cpp reads the file, cardList.txt " <<
        "into an array and" << endl;
    cout << "sorts the array using the selection sort algorithm." << endl;
    cout << "The sorted array is written to a file named cardList.srt." <<
        endl;
}

void openFile(ifstream& inputFile, ofstream& outputFile){
    inputFile.open("cardsList.txt");
    if(!inputFile.is_open())
        exit(1);
    outputFile.open("cardsList.srt");
    if(!outputFile.is_open())
        exit(1); 
}

void buildList(char (*array)[25], ifstream& inputFile){
    for (int i = 0; i < 5; i++)
        inputFile >> array[i];
}

void sortList(char (*list)[25], int length){
    int firstOutOfOrder, location;
    char temp[25];
    for (firstOutOfOrder = 1; firstOutOfOrder < length; firstOutOfOrder++){
        location = firstOutOfOrder;
        while ( location > 0 && list[location - 1] > list[location]){
            temp[25] = list[location][25];
            list[location][25] = list[location - 1][25];
            list[location - 1][25] = temp[25];
            location--;
        }
    }
}

void writeFile(char (*array)[25], ofstream& outputFile){
    for (int i = 0; i < 5; i++)
        outputFile << array[i];
}

但是我的程序只打印instruct();语句,似乎没有其他任何事情发生。该程序应该创建一个带有排序列表的文件cardList.srt,并且在编译后不会出现在我的目录中。

1 个答案:

答案 0 :(得分:0)

inputFile.is_open()或outputFile.is_open()返回false,因此调用exit()。