개발중인 오픈소스 프로그램이 하나 있다.

 

파일 리스트가 담긴 리스트 파일과, 해당 리스트와 매칭되는 '실제 파일' 을 비교하여 리스트 파일을 수정해주는 프로그램인데...

 

이를 1년전쯤에 만들었다가 면접에서 구조 지적을 한번 받고나서 (C++인데 왜 C 스타일로 짰느냐...) 리팩토링 작업중이었다.

 

프로그램의 중요한 부분 중 하나인, '리스트 파일을 읽어오는 함수' 를 재작업하는데 자꾸 프로그램이 다운되는 현상이 있어 문제를 체크해보다가... eof 체크도 넣어보고 했는데.

 

원인은 좀 다른곳에 있었다.

 

 

(표준 출력부가 존재하는 이유는 당연히 테스트용...)

 

요게 그 문제의 함수부.

 

string 변수인 tempinput에 파일 1줄을 읽어 저장하고, 해당 파일 라인에 'name' 이라는 키워드가 있는지 검사를 하는 구조이다.

 

name 키워드가 있어야 아래의 MidData 및 Convert가 작동을 하는데,

구조를 다시 생각해보니

File line Read -> npos Check -> (if true) Convert 의 구조로 진행되어야할것이

npos Check -> (if true) File line Read -> Convert로 돌아가고있는게 아니었는가.

 

그러니 자꾸 터지지...

오류를 수정하면서 모양도 조금 다듬었다. 

 

좀 이런 멍청한 실수는 안해야되는데... 참... 

 

밤이라 피곤해서 그랬다고 생각하자... 

'프로그래밍 > C/C++' 카테고리의 다른 글

포인터 변수 사용시 데이터 오염 문제  (0) 2020.11.28
Const 키워드.  (0) 2020.08.18
Visual C++에서 C++ 버전확인하는 방법.  (3) 2020.02.27
기록 #1  (0) 2020.01.18
Jsoncpp 라이브러리 사용 관련  (0) 2020.01.01

+ Recent posts