[C] scanf의 입력의 끝은?

C 2019. 12. 3. 01:20

1. scanf는 언제 입력의 끝으로 인식하는가?

1. 띄어쓰기
2. 엔터

char a[50];
scanf("%s", a);
printf("%s", a);

abc 입력시 -> abc 출력
abc d 입력시 -> abc 출력
d는 사라졌는가? 아직 버퍼에 남아있다.

char a[50];
char b[50];
scanf("%s", a); // 띄어쓰기 전까지 a배열에 입력되고
scanf("%s", b); // 나머지는 b배열에 입력된다.
printf("a=%s b=%s", a,b);
abc d 입력시 -> a배열에 abc b배열에 d가 들어간다.

2. 띄어쓰기도 입력으로 받고 싶다면?
gets를 이용한다.
gets는 엔터를 끝으로 인식한다.
그래서 엔터 나오기 전에 전부 입력받음.

char a[50];
gets(a);
puts(a); or printf("%s", a);
abc abc 입력시 -> abc abc 출력

※ gets는 \n를 저장하지 않는다. fgets는 \n도 저장한다.

'C' 카테고리의 다른 글

[C] 배열과 포인터와의 관계  (0) 2019.12.03
[C] int형 배열과 char형 배열의 선언  (0) 2019.12.03
[C] int형 char형 배열의 scanf printf  (0) 2019.12.03
[C] int형 char형 배열의 NULL  (0) 2019.12.03
[C] 재귀함수 이해하기  (0) 2019.12.03
블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,