jaehoo1   5년 전

문자열을 이용해서 풀면 쉬운 문제일줄 알았는데 계속 틀리네요...

다른 분도 문자열로 푼 분 계시던데 그 분과 코드가 매우 유사함에도

불구하고 틀렸다고 나옵니다. 무엇이 문제일까요 ㅠ

djm03178   5년 전

fflush(stdin); 은 표준이 아니며, VS 구버전에서만 지웠했던 기능입니다.

jaehoo1   5년 전

오 감사합니다!

근데 컴파일러에서 지원하지 않는 표준 함수를 사용했을 경우,

틀렸습니다가 아닌 컴파일 에러가 발생해야하는거 아닌가요?

fflush못쓰면 입력버퍼는 뭘로 비우지...

아 그리고 저번에 ffush써서 맞은 문제 있었던거 같아요

djm03178   5년 전

fflush 자체는 표준 함수가 맞습니다. 하지만 이 함수는 원래 출력 스트림에 대해서만 (예를 들면 stdout) 동작하게 된 함수입니다. stdin에 사용했을 때의 동작은 정의되어 있지 않습니다. 하지만 둘 다 타입에는 문제가 없으므로 컴파일 단계에서 에러를 잡아낼 일은 아닙니다.

chogahui05   5년 전

입력버퍼를 비운다는 말이 무슨 말인지는 모르겠다만..

그냥 문자열로 받아버리면 어떨까요? 어짜피 "*"이나 "+"도 문자열기 때문에

scanf("%s%s%s",str1,op,str3);

요런 식으로 받으면 될 거 같은데..

djm03178   5년 전

이 문제의 경우 수가 하나 입력된 후에는 개행 문자가 하나 있을 것이 보장되니까, getchar() 등으로 문자 하나를 버리면 됩니다.

jaehoo1   5년 전

흠 그러면 fflush(stdin)을 썻을 경우 아무 동작도 안하는거군요...

감사합니다 앞으론 getchar()를 써야겠군요

댓글을 작성하려면 로그인해야 합니다.