C언어 scanf_s 질문입니다..
글쓴이: fuclangck / 작성시간: 토, 2020/04/04 - 5:19오후
C언어로 문자열을 입력받아 1.공백포함X 2.공백포함
이렇게 2가지로 출력을 하는게 목표입니다.
하지만 코드 실행시 두번째 scanf_s에서 아무런 입력도 받지않고 어떠한 키를 입력받아도 프로그램이 종료됩니다..
버퍼문제라고 해서 fflush 등을 사용 해봤지만 해결되지 않아서 질문해봅니다.
이유나 해결책좀 알 수 있을까요?
#include <stdio.h> #include <string.h> int main(void) { char string[50] = ""; printf("Enter a string:"); scanf_s("%s", string, 50); int length = strlen(string); for (int j = length - 1; j >= 0; j--) { printf("%c", string[j]); } char str[50] = ""; printf("\nEnter a string(Possible to include spaces):"); scanf_s("%[^\n]", str, 50); int len = strlen(str); for (int j = len - 1; j >= 0; j--) { printf("%c", str[j]); } getch(); return 0; }
Forums:
버퍼 문제 맞고, 두번째 scanf_s 호출하기 전에
버퍼 문제 맞고, 두번째 scanf_s 호출하기 전에 getchar() 한 줄 넣어보시죠.
첫번째 scanf_s의 "%s" 포맷은 공백을 받아들이지 않기 때문에 입력할 때 넣은 엔터가 버퍼에 '\n'으로 남아 있는데, 두번째 scanf_s 는 공백문자를 제외한 것만 받아들이겠다고 했기 때문에 버퍼에 남아 있던 \n을 보는 순간 더 이상 처리가 불가능해서 바로 빠져나가버려서 그렇습니다.
fflush(stdin) 으로 입력버퍼를 비우는 건 visual studio에서만 통하는 방법인데 그나마도 안 되는 것으로 압니다.
좋은 하루 되세요!
댓글 달기