cin을 오버로딩했는데 입력을 받지 않고 그냥 지나갑니다.
글쓴이: rjaechang / 작성시간: 금, 2007/11/09 - 4:28오후
입력을 연속으로 두번 받는데 첫번째 입력은 제대로 됩니다.
그런데 두번째 입력받으려 하면 이상하게 입력부분이 그냥 넘어가서 오류가 납니다.
fflush(stdin)을 해봐도 안되네요..
int main() { Matrix A, B; cin >> A; fflush(stdin); cin >> B; //A+B; return 0; }
istream& operator >> (istream& is, Matrix& matrix) { Triple s; int p; is >> s.row >> s.col >> s.value; //문제의 부분!!!! if(s.row > s.col)p = s.row; else p = s.col; matrix.headnode = new MatrixNode(FALSE, &s); if(p == 0){ matrix.headnode -> right = matrix.headnode; return is; } MatrixNodePtr *head = new MatrixNodePtr[p]; for (int i=0; i<p; i++) head[i] = new MatrixNode(TRUE, 0); int CurrentRow = 0; MatrixNode *last = head[0]; for (i=0; i<s.value; i++){ Triple t; is >> t.row >> t.col >> t.value; if(t.row > CurrentRow){ last->right = head[CurrentRow]; CurrentRow = t.row; last = head[CurrentRow]; } last = last->right = new MatrixNode(FALSE, &t); head[t.col]->next = head[t.col]->next->down = last; } last->right = head[CurrentRow]; for(i=0; i<s.col; i++) head[i]->next->down = head[i]; head[p-1]->next = matrix.headnode; matrix.headnode->right = head[0]; delete[]head; return is; }
Forums:
다른것보다도,
다른것보다도, fflush(stdin) 하시면 안됩니다.
http://c-faq.com/stdio/stdinflush.html
http://c-faq.com/stdio/stdinflush2.html
삽질의 대마왕...
삽질의 대마왕...
아.. 예전에 봤을때는
아.. 예전에 봤을때는 이해가 잘 안갔는데 이제 이해가 갑니다.
fflush는 출력스트림에만 정의되어 있는 함수군요.
좋은 답변 감사합니다.^^
(~`0`)~
댓글 달기