参考:
http://www.cplusplus.com/reference/cstdio/printf/
http://stackoverflow.com/questions/7899119/what-does-s-mean-in-printf-in-c
【代码】
#include <stdio.h>
#include <string.h>
int main() {
char dir[] = "/home/yasi/this/place/file1";
char cmd[1024] = {0};
char * p = strrchr(dir, '/');
snprintf(cmd, sizeof(cmd), "rm -f %.*s/*.txt", p - dir, dir);
printf("cmd:~%s~\n", cmd);
return 0;
}
第9行中,"rm -f %.*s/*.txt" 中的 ".*" 对应后面的 p - dir 参数,它们指定了在用dir字符串格式化cmd的时候,只使用dir字符串的 ""/home/yasi/this/place" 部分,即前21个字符。
【输出】
cmd:~rm -f /home/yasi/this/place/*.txt~
【注意】
.* 和后面的 (p - dir) 是属于格式化参数列表之外的 “额外的参数”。