반응형
'%s'
- 가장기본적인 문자열 포맷 지정자,
- 문자열을 출력하거나 입력받을 때 사용된다.
👇 출력 예
char str[] = "Hello, world!";
printf("%s\n", str);
- Hello, world! 를 출력한다.
👇 입력 예
char str[100];
scanf("%s", str);
- 사용자의 입력에서 첫 번째 공백이나, 개행 문자 전까지 문자열을 'str'에 저장한다.
- 만약 사용자가 Hello world를 입력했다면, 'str'에는 Hello만 저장된다.
'%[n]s'
- 'scanf' 함수에서 사용된다. / 입력 받은 문자의 수를 제한할 때 사용된다.
- 'n'은 최대 문자 수를 지정하는 숫자이다.
👇 입력 예
char str[100];
scanf("%10s", str);
- 최대 10개의 문자를 입력 받아 'str'에 저장한다.
- 사용자가 'Hello world'를 입력하면 'Hello worl'까지만 저장되고 나머지는 무시된다.
- 공백이나 개행문자를 만나도 'n'글자까지 모든 문자를 입력 받는다.
버퍼 오버플로우 주의
'%s'
- '%s' 사용시 입력 버퍼의 크기를 넘어서는 입력이 들어오면 프로그램이 이상해 질 수 있다.
- 가능하면 '%[n]s'를 사용하는 것이 안전하다.
'%[n]s'
- 'n'은 배열의 크기보다 작거나 같아야 한다.
- 배열의 크기를 초과하는 'n'을 사용하면 역시 오버플로우가 발생할 수 있다.
끝
반응형
'c언어 > c언어' 카테고리의 다른 글
[c언어] typedef (0) | 2025.03.02 |
---|---|
[c언어] strcnpy (0) | 2025.03.02 |
[c언어] strcpy (0) | 2025.03.02 |
[c언어] 함수 (4) | 2024.07.02 |
[c언어] strcmp (2) | 2024.05.31 |