ในภาษา C %n เป็นตัวระบุรูปแบบพิเศษ ทำให้ printf() บันทึกจำนวนตัวอักษรที่พิมพ์ไปแล้ว (ก่อน %n) ลงในตัวแปรที่ชี้โดยอาร์กิวเมนต์ที่ตรงกัน ไม่ได้พิมพ์อะไรออกมา ต้องใช้ printf() อีกครั้งเพื่อแสดงค่า
ตัวอย่าง
#include <stdio.h>
int main() {
int s;
printf("The value of %ns : ", &s);
printf("%d", s);
getchar();
return 0;
}ผลลัพธ์
The value of s : 13
แม้จะกำหนดค่าให้ตัวแปรก่อนหน้า %n ก็จะไม่ได้ค่าที่กำหนด แต่จะนับจำนวนตัวอักษรก่อน %n (ไม่นับ %n เอง)
ตัวอย่างหลาย %n
#include <stdio.h>
int main() {
int s, m = 28, val;
printf("The value of %ns and %nm %nval : ", &s, &m, &val);
printf("%d\t%d\t%d", s, m, val);
return 0;
}ผลลัพธ์
The value of s and m val : 13 19 21