%nは普通の%と違う使われ方をする。
%nに引数の値を代入するのではなく引数に値を代入する仕様になっている。
そのためprintfなどで使い方を間違えるとコアダンプしてしまうので注意する。
%nの使い方
int in_cnt;
printf("HOGEHOGE%n\n",&in_cnt );
printf("%d\n",in_cnt);//8が出力される。
【注意】
syslog()を使うときにフォーマット部分を入力値で作ってしまうと
入力値に%nが入っていた場合コアダンプしてしまうので注意する必要がある。
フォーマット部分を作るときに%のエスケープをすること。
0 件のコメント:
コメントを投稿