C++ 텍스트 파일 입출력 오류

조회수 1045회
#include <iostream>
#include <fstream>
using namespace std;

int main(void) {
    ifstream readFile;
    readFile.open("input.txt");//텍스트 파일을 읽음
    char* text = new char[20];
    char** word = new char*[20];//이중 동적 배열(정렬)
    int i = 0;//text에 input을 입력받을 때 사용
    int j = 0;//word에 text들을 입력받을 때 사용(words의 인덱스)
    int k = 0;//word에 text들을 입력받을 때 사용(text의 인덱스)

    if (readFile.is_open()) //파일이 성공적으로 읽히면 ture를 반환
    {
        while (!readFile.eof())//파일의 끝에 다다르면 true를 반환.끝에 다다를 때 까지 반복 
        {
            readFile.get(text[i]);
            if (text[i] >= 33 && text[i] <= 47) text[i] = NULL;//입력받은 문자가 구두점이면 제거
            else if (text[i] == ' ') //공백을 단어와 단어를 구분하여 하나씩 저장하는 포인트로 삼음
            {
                for (k; k == (i - 1); k++) {
                    *word[j] = text[k];
                }//word 한 칸에 단어 하나 저장
                j++; k = k + 2;
            }
            i++;
            //char형 배열 text의 각각의 배열에 순서대로 input의 텍스트를 입력
        }
        for (int m = 0; m < j; j++) {
            printf("%s\n", *word[m]);
        }//word에 단어들이 잘 입력됐나 test
    }
    else printf("파일을 읽는 것을 실패하였습니다.");//파일이 성공적으로 읽히지 않았을 경우의 예외 처리

    return 0;
}

위 프로그램의 목적은 본래 다음과 같습니다.

  1. 문장으로 구성된 텍스트 파일을 입력받고
  2. 텍스트에 있는 단어들을 선택정렬 방법을 이용해 가나다 순으로 정렬. (이 때, 문장부호는 제거)
  3. 정렬된 단어 중 중복된 단어는 하나만 남기고 제거.
  4. 사용자가 단어를 입력하면 그 단어가 정렬된 단어 리스트에서 몇 번째 단어인지 그 결과를 반환. (이원탐색기법사용)

텍스트 파일의 이름은 보이시는 것과 같이 input.txt입니다. 헌데 이 과정 중 선택정렬 직전까지만 가고 잠시 테스트삼아 for문으로 단어들이 잘 입력됐나 보려 했더니 1번부터 무언가 잘못되었더군요. 계속해서 예외처리구문만 나왔습니다. 헤더파일 도 넣어 보았고, readFile.open() 함수에 텍스트 파일을 오픈할 모드도 넣어보았습니다. 텍스트 파일의 위치도 여기저기로 바꿔 보고 readFile.open() 함수에 직접 텍스트 파일의 경로도 넣어 보았고요. 결과는 항상 같더군요. 파일을 읽는 데에 실패한 겁니다.

대체 어떻게 해야 하는 걸까요? visual studio 2019 사용중입니다.

  • 어이구 무슨 헤더파일을 넣었는지가 나오지 않았네요. string을 넣어보았습니다. 알 수 없는 사용자 2021.3.11 03:03

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)