while문 질문드립니다!
히메
질문 제목 :while문 질문드립니다!while문에서의 printf의 이상함.질문 내용 :
일종의 간단한 단어 맞추기인데,
while문에서 printf의 출력이 한번만 나와야하는데 두번씩 나와서 질문드립니다.
일단 아래가 코드입니다.#include stdio.h
#include string.hint main() {
char word[9]=computer,output[9]=________;
char input;
int i=0;
while(strcmp(word,output)!=0){
scanf(%c,&input);
for(int j=0;j9;j++){
if(input==word[j]){
output[j]=word[j];
}
}
printf(%s\n,output);
i++;
} printf(%d\n,i);
return 0;
}예를들어 input에 c라는 단어를 치면 결과로c_______ 라고 나와야 하는데c_______
c_______이렇게 두번이나 나오는 문제가 발생합니다.마찬가지로 입력하는 횟수를 세는 i 또한 1만 올라가는 것이 아니라 2가 올라가더군요.마지막에 output을 완성시켜 word와 output이 같아지면 while문 밖으로 나가지기에 computer가 한번만 나오지만, 그 사이의 모든 과정에서는 두번씩 중복되서 나옵니다.아무리봐도 while문이 한번 자동으로 더 돌아서 그런거 같은데 이유를 알 수가 없네요 ㅠㅜ
부탁드립니다!!
-
소미 2023-06-24
질문게시판에서는 덧글을 포함해서 반드시 돋움체 또는 굴림체를 사용해야 됩니다.
이 폰트로 계속해서 덧글을 쓰면 탈퇴가 됩니다.
폰트를 설정하는 방법은 자신의 블로그에서 추가한 폰트를 전부 지우면 됩니다. -
WatchOut 2023-06-24
fflush(stdin);를 scanf 위나 아래에 넣어보세요~
제 컴퓨터에서는 잘 동작되는데.. 왜 c만 안먹는지ㅠ;; -
한지잠 2023-06-24
오오 감사합니다!!
근데 fflush(stdin);은 먹히지가 않고
scanf를 %s로 바꾸면 괜찮아지는데 c라는 단어를 치는 경우만 인식이 안되더군요 ㅠ
더 시도해봐야겠습니당 -
초롬 2023-06-24
버퍼에 \\n이 남아 있어서 그런것 같습니다 :)
버퍼를 비워주시면 해결됩니다.
간단하게는 fflush(stdin);를 사용하시면 됩니다.
아니면 scanf에서 %s로 바꾸셔도 해결될겁니다.