<div><br /></div> <div>독학하려니 힘듭니다. 아래의 소스코드는 student의 정보가 담긴 텍스트파일을 읽어서 binary파일로 고대로 덤프뜨려고 하는 코드입니다.</div> <div><br /></div> <div>seekp를 이용해서 각 학번에 맞는 곳에 write를 해서 나중에 다시 seekg를 통해 읽어서 output파일을 새로 만드려는 계획인데요.</div> <div><br /></div> <div>EOF체크가 안됩니다. 게다가 저렇게 덤프된 student.dat는 메모장으로 읽으면 응답없음이 떠버리네요. 코드 완전 엎고 다시짜도 똑같은 문제에</div> <div><br /></div> <div>봉책하는데 구글링 실력이 미천한지 잘안되네요. read하는 과정에서 파일포인터가 어떻게 문제가 생긴것같은데... 하 ㅜㅜ</div> <div><br /></div> <div> <div>class student</div> <div>{</div> <div>private:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int id; // 학번: 1 ~ 1,000,000</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>char name[10]; // 이름</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>char dept[12]; // 학과</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>char gender[2]; // F: 여자, M: 남자</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int age; // 나이</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>double grade; // 평점</div> <div><br /></div> <div>public:</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int dump(char *s);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int Putdat(ifstream &x)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>x >> id >> name >> dept >> gender >> age >> grade;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>return id;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div>};</div> <div><br /></div> <div>int main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>char fname[20];</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>class student sm;</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>cout << "파일이름을 입력하시오." << endl;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>cin >> fname;</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>sm.dump(fname);</div> <div><br /></div> <div>}</div> <div><br /></div> <div>int student::dump(char *s)</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>ifstream rdfile;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>ofstream wdfile;</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>int chk;</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>rdfile.open(s, ios::in);</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if (!rdfile) { cerr << "File could not be opened" << endl; return 0; }</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>wdfile.open("student.dat", ios::out|ios::trunc|ios::binary);</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if (!wdfile) { cerr << "File could not be opened" << endl; return 0; }</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>while (1)</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>{</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>chk=Putdat(rdfile);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>if (!rdfile.eof())</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>wdfile.seekp((chk - 1)*sizeof(class student), ios::beg);</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>wdfile.write(reinterpret_cast<const char *>(this), sizeof(class student));</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div> <div><br /></div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>rdfile.close();</div> <div><span class="Apple-tab-span" style="white-space: pre"> </span>wdfile.close();</div> <div>}</div></div>
<img src=http://data.shootgoal.com/userfiles/bbs/201108/24/1625522783.gif>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.