_snprintf驱动程序中怎么用这个函数

在rootkits-windows内核的安全防护书的驱动程序中用了这个函数,但我加上c中头文件都不行, '_snprintf': identifier not found,新手求教

这个函数的格式跟printf的是差不多一样的,
不过在gcc里面,好像那个0是没用的,左边不会补0,会补空格,
具体格式在后文,
这是我试验的代码:

1 #include <stdio.h>
2
3 int main(void)
4 {
5 char array[20];
6 char *str = "1234";
7
8 snprintf(array, sizeof(array), "%08.8s", str);
9 printf("%s", array);
10 getchar();
11 }
----------------------------------------------------------
duck@duck ~/c $ gcc -o sn snprintf.c
snprintf.c: In function ‘main’:
snprintf.c:8: warning: '0' flag used with ‘%s’ gnu_printf format
snprintf.c:8: warning: '0' flag used with ‘%s’ gnu_printf format
duck@duck ~/c $ ./sn
1234
----------------------------------------------------------
由上面的输出看到左边补的确实是空格.

格式的具体含义:

.8 表示:显示精度,对于字符串,用于指定从字符串左侧开始截取的子串字符个数,也就是说,str只取前8个字符,
08 表示:最小域宽,若为正整数,当输出数据宽度小于设定值时,在域内向右靠齐,左边多余位补空格,当输出数据宽度大于设定值时,按实际宽度全部输出,
若有前导符0(08 的那个0),则左边多余位补0(不是空格)
若最小域宽为负整数,输出数据在域内向左靠齐.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-17
比如snprintf(Arry, sizeof(Arry),本回答被提问者采纳
相似回答