2011-01-28 3 views
0

C++에서 txt 파일의 정보를 읽어야하는 코드를 작성했으며 "|" 문자는 새로운 줄로 점프해야합니다. 그것의 무언가는 확실히 쉽다 그러나 Im는 실행할 때 문제가 있고 Ive는 문제를 몇 시간 동안 찾아내는 것을 시도하고 나는 suceed를 havent. :(나는 코드를 부착.FILE에서 읽고 strtok 함수를 사용할 때의 문제

Thaaaanks을 사전에 도움을.

#include<iostream> 
#include<fstream> 
#include<string> 
#include <stdio.h> 

using namespace std; 

int main() 
{ 
    string ruta_base("C:\\a\\"); 
    char * pch; 

    ifstream myReadFile; 
    const string rutaFichero=ruta_base.append("text.txt"); 
    myReadFile.open(rutaFichero.c_str()); 

    char* temp; 
    if (myReadFile.is_open()) { 
     while (!myReadFile.eof()) { 
     myReadFile.read(temp,1); 

     pch = strtok(temp,"|"); 
     while (pch != NULL) 
     { 
      printf ("%s\n",pch); 
      pch = strtok (NULL, "|"); 
     } 
     } 
    } 
    myReadFile.close(); 

    system("pause"); 
    return 0; 
} 
+0

읽어 비교할 수 있습니다 당신은 어떤 결과물을 얻습니까? 샘플 입력 파일 내용과 출력을 제공하십시오. –

+0

예를 들어, 내 "text.txt"파일 "| | 피터 교수 1"포함됩니다 임시직의 변경을 완료했지만 여전히 문제가 있습니다. 그것은 완벽하게 컴파일되지만 실행시 문제가 있습니다. 결국 화면에 이상한 문자가 나타납니다. 런타임 검사 실패 # 2 - "temp"변수가 손상되었습니다. 이것은 무엇을 의미 하는가??? – pitbull

답변

0

당신은 정의되지 않은 동작을 호출 할이 메모리 위치에 쓰기를 시도. read 함수에서 초기화되지 않은 포인터 temp을 사용하고 있습니다.을 만들 말라 포인터로 temp. 대신 당신이 char temp;을하고 read 기능에 &temp 즉 온도의 주소를 전달할 수 있습니다. 그런 다음 strtok를 사용할 필요가 없습니다, 당신은 단순히 문자가 |

+0

내가 가진 | (새로운 라인 ""모든 다른 요소 후) 피터 교수 : 출력이 될 것 – pitbull

+0

@pitbull : 매우 높은 확률로, 이는 하나의'char temp; '에서 하나 이상의'char'를'읽으려고했다. 다른 문자가 넘쳐납니다. – MSalters

관련 문제