fgets 및 sscanf를 사용하여 파일에서 읽으려고합니다. 내 파일에는 벡터의 각 줄에 문자를 넣고 싶습니다. 지금까지 나는 다음과 같은 것을 가지고있다 :C++ 파일 입출력
FILE *fp;
fp = fopen(filename, "r");
if(!fp)
{
fprintf(stderr, "Unable to open file %s\n", filename);
return 0;
}
// Read file
int line_count = 0;
char buffer[1024];
while(fgets(buffer, 1023, fp))
{
// Increment line counter
line_count++;
char *bufferp = buffer;
...
while(*bufferp != '\n')
{
char *tmp;
if(sscanf(bufferp, "%c", tmp) != 1)
{
fprintf(stderr, "Syntax error reading axiom on "
"line %d in file %s\n", line_count, filename);
return 0;
}
axiom.push_back(tmp);
printf("put %s in axiom vector\n", axiom[axiom.size()-1]);
// increment buffer pointer
bufferp++;
}
}
내 공리 벡터는 vector<char *> axiom;
으로 정의된다. 프로그램을 실행할 때 오류가 발생합니다. 내가 sscanf
을 할 때 일어납니다. 내가 뭘 잘못하고 있는지에 대한 제안은?
std :: string을 사용하는 단계를 수행하려는 경우 (전심으로 권장합니다) 파일 I/O에 대한 C++ I/O 클래스로 전환 할 수도 있습니다 (즉, fstream). – rmeador