c언어 질문잇숩니다~
조회수 781회
char str[2000];
scanf("%[^\n]", str);
printf("%s", str);
char str1[2001];
fgets(str1, sizeof(str1), stdin);
printf("%s", str1);
위의 코드에서 먼저 문자열을 입력을 하고
str버퍼에 문자열이 저장된 후
fgets함수로 str1버퍼에 문자열을 다시 입력받고자 위의 코드를 작성하였는데
str1버퍼에도 str에 들어간 문자열이 들어가집니다.
스트림과 관련된 것 같은데 fflust(stdin)이 작동되지 않습니다. 어떻게 해결해야 되나요? ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
scanf
에서 입력을 받을때 버퍼에는 다음과 같이 저장됩니다."(입력한 문자열)\n"
그리고str
에 문자열을 넘기고 버퍼에는 개행문자만 남게 됩니다.fgets
에서는 개행문자만str1
만 넘겨주게 되는 것입니다.그러면 두번째 출력은 개행문자가 되겠네요.
새로운 입력을 받고 싶다면 다음과 같이 코드를 작성하는 것이 좋을 것 같습니다.
char str[2000]; scanf("%[^\n]", str); printf("%s", str); getchar(); //버퍼의 개행문자를 지움 char str1[2001]; fgets(str1, sizeof(str1), stdin); printf("%s", str1);
댓글 입력