C++文件I/O和指针

C++ File I/O and Pointers

本文关键字:指针 文件 C++      更新时间:2023-10-16

我试图创建一个使用输入文件"cardList.txt"的程序,该文件包含:

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

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

main:

#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,它在编译后不会出现在我的目录中。

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