안녕하세요. 궁금증연구소입니다.
오늘 포스팅 주제는 "c언어 버퍼 비우기 (%*c)"입니다.
#include <stdio.h>
int main(void){
// FILE *fp = stdin;
int Age = 0;
printf("나이를 입력:");
scanf("%d%*c", &Age);
char Name[12] ={0};
printf("이름을 입력:");
gets(Name);
printf("%d%s", Age, Name);
}
C언어에서 scanf 함수는 개행 문자를 같이 저장합니다. 따라서, scanf 함수 이후에 gets() 같은 함수를 쓰게 되면 버퍼에 남아있는 개행 문자가 scanf 값으로 들어가서 새로운 값을 못 받게 됩니다.
이럴 때 보통 ffluash(stdin)을 통해 버퍼를 비워버리는 방법을 쓰는데요.
위와 같이 %*c라고 scanf의 형식을 지정해두면, 개행 문자를 간편하게 없앨 수 있습니다.
의미는 문자를 하나 받되 그 값을 무시한다. 정도로 생각하면 됩니다.
[C언어]Suspicious pointer conversion 에러 (0) | 2022.09.10 |
---|---|
C언어 sizeof(자료형) 간단정리 (0) | 2022.08.10 |
[C언어] 구조체의 문자열포인터는 변경시 참조하는 모든 값이 변경됨 (0) | 2022.08.02 |
[C언어] 문자열포인터와 문자열의 차이점 (0) | 2022.07.27 |
[리눅스] 500 Illegal port command Error 발생시 대처법(ftp) (0) | 2022.07.23 |