[MFC]버튼을 클릭하면 파일의 data를 int형으로 입력받는 프로그램입니다.
갅쥐누뉨
여기서 floor[i]는헤더파일에서 정의한 int 형 전역변수입니다.
file을 한 줄씩 읽어서 그걸 형변환을 해서 차례로 floor[] 에 넣는 프로그램입니다만..
이상하게도 floor[0] 에는 무조건 0이 들어가지네요.
제 생각대로라면
예를 들어서 (2 5 25 6 12 ....) 이란 data가 들어있는 파일이라고 치면..
floor[0] 에는 2 가 [1]에는 5, [2]에는 25가 들어가야하는데 ..
실제로는 [0] 에는 0, [1]에는 5, [2]에는 25 가 들어가집니다.
뭔가 코드상에 문제가 있는건가요? 저로는 아무리 봐도 모르겠네요.-_-;그리고 덧으로 질문 몇 개 더 드립니다.
1. 지금 저대로는 ascii 로 저장된 파일은 못읽고 unicode 로 저장된 파일만 읽는게 가능합니다.
이를 두 코드 다, 혹은 ascii 코드로 저장된 파일만 읽을 수 있게 하는 방법이 궁금하네요..;
2. 받아들일 수 있는 data량을 상당히 크게 만들고자 floor 배열을 크게 잡으니까 컴파일 시에는 이상이 없는데
실행을 하면 stack overflow 가 뜨면서 실행이 안되는군요.
500000개 쯤 배열을 잡으려고 하는데 overflow가 안뜨게 하는 방법, 힌트를 알려주시면 감사하겠습니다.
-
흰가람
메인문제 해결 했습니다. 뭐가 잘못이었는지는 파악을 못했지만..
일단 CArchive 말고 CStdioFile 을 사용하니까 잘되는군요.
1번은.. 일단 공부해봐야겠심더.
2번 말인데요.. 포인터로 잡으니까 잘 됩니다만.. 그 배열을 동적으로 받으려고 하는데..
제가 생각하는게 파일을 읽으면 그 파일의 라인수를 읽어서 그만큼 배열을 만들려고 합니다만..
파일의 라인수를 읽는 방법을 아시는지요...;;
getlength() 로 용감히 했다가 좀 큰 파 -
가시내
일단 메인문제는 디버깅을 해봐야 하는 상황인거 같구요
1번 문제는 다소 복잡하네요. 일단 프로젝트가 유니코드로 컴파일이 됐을것이고 CArchive는 파일에 저장할때 유니코드로 저장을 할것입니다. 저장은 그렇다 치고 읽어들이는것은 직접 파싱을 해야 합니다.
파일에서 사용된 코드가 유니코드인지 아스키코드 인지 확인을 하고
_ttoi를 유니코드일때는 _wtoi 로 아스키일경우는 atoi를 사용하셔야 합니다
2. ㅎㅎ 그렇게 많은 메모리를 스택에 사용하시면