format string attack을 공부하다가 궁금한점이 생겨서 이렇게 글을 올립니당..
printf() 함수를 쓸때 변환지정자(?)들 중에서 %n 이란걸 이용하더군여..
변환지정자 중에 이런것도 있구나 하면서 공부하는데
자주 쓰이는 %d, %s, ... 이외에 또 뭐가 있을까 궁금해 하면서
여러 책들을 뒤져 봤는데 다 아는 것들뿐이고 비슷비슷 하였슴당..
(앞에 %는 빼고) d, i, o, x, c, s, f, e, g
이것들 말고 다른 변환지정자들에는 어떤것들이 있는지 궁금함당...
답변부탁드리구여...즐거운 하루 되세여 :-)
제가 가지고 있는 책( C A Reference Manual )에 보면 변환지정자로 사용되는
문자들은
c, d, e, f, g, i, n, o, p, s, u, x 가 있다고 나옵니다.
개개별로의 사용법은 너무 방대한 내용이라 설명드리기가 어렵군여..(제가
가지고있는 책에서 이부분만 3장에 걸처 설명하고 있떠여..-_-)
그럼 이만..
"Sung-il Seo" <dis...@cic.hongik.ac.kr> wrote in message >
[snip]
> (앞에 %는 빼고) d, i, o, x, c, s, f, e, g
> 이것들 말고 다른 변환지정자들에는 어떤것들이 있는지 궁금함당...
> 답변부탁드리구여...즐거운 하루 되세여 :-)
>
제 책에는
Basic Printf Conversions 로
d, i, o, x, X, u, c, s, f, e, E, g, G, p 가 있다고 나오는군요
p : void *; pointer (implementation-dependent representation)
이라고 나오네요...
n의 용도를 알게되시면 여기에도 포스팅 해주셨으면 합니다. ^^;
--
Dept. of Computer Engineering, Kumoh National Univ. of Tech.
Kumi Internet Tech. Lab.
To C_ilk Road..
C_ink Big !
--
Dept. of Computer Engineering, Kumoh National Univ. of Tech.
Kumi Internet Tech. Lab.
To C_ilk Road..
C_ink Big !
n : 대체될 int* 형 실인수의 객체에 이 n 변환 직전까지 printf로 출력된
바이트 수가 저장된다. 문자는 아무것도 출력되지 않는다.
간단하게 예를 들어 보면요..
#include <stdio.h>
int main(void)
{
int n;
printf("hello\n%n", &n);
printf("%d\n", n);
return 0;
}
결과는
hello
6
변환 지정자가 나오기 전까지의 출력된 바이트 수를 저장시킬때 쓰는 건데,,
생각해 보니까 참 유용할꺼 같아요..
그럼..초보의 답변이었습니다..안녕히..
--
최문재
http://www.dinkum.com/htm_cl/lib_prin.html#print%20conversion%20specificatio
n
Conversion Argument Converted Default
Specifier Type Value Base Precision
%c int x (unsigned char)x
%lc wint_t x wchar_t a[2] = {x}
%d int x (int)x
10 1
%hd int x (short)x
10 1
%ld long x (long)x
10 1
%e double x (double)x
10 6
%Le long double x (long double)x 10
6
%E double x (double)x
10 6
%E long double x (long double)x 10
6
%f double x (double)x
10 6
%Lf long double x (long double)x 10
6
%g double x (double)x
10 6
%Lg long double x (long double)x 10
6
%G double x (double)x
10 6
%LG long double x (long double)x 10
6
%i int x (int)x
10 1
%hi int x (short)x
10 1
%li long x (long)x
10 1
%n int *x
%hn short *x
%ln long *x
%o int x (unsigned int)x
8 1
%ho int x (unsigned short)x
8 1
%lo long x (unsigned long)x
8 1
%p void *x (void *)x
%s char x[] x[0]...
large
%ls wchar_t x[] x[0]...
large
%u int x (unsigned int)x
10 1
%hu int x (unsigned short)x
10 1
%lu long x (unsigned long)x
10 1
%x int x (unsigned int)x
16 1
%hx int x (unsigned short)x
16 1
%lx long x (unsigned long)x
16 1
%X int x (unsigned int)x
16 1
%hX int x (unsigned short)x
16 1
%lX long x (unsigned long)x
16 1
%% none '%'
---
major in CSIC, school of EECE, Hongik Univ.
Computer Lab.
Sung-il Seo
---