分类:
2008-10-13 16:14:17
#include看出什么毛病了么?我想除了天天处理字符串的人,才能把这个错看成一个眼中钉。笨笨如我,就愣是半天没看出为嘛没有打印出%来。我们知道printf()这一系的函数是靠一个参数(记做format参数)来控制输出格式的,如果含有%s,就表示对应位置是一个字符串,如果是%d,就表示对应位置是一个int型变量。如果想在format中占个%号的地儿,就必须连续写两个%,也就是上面代码中的sprintf()的format参数那样子,否则只有一个%,sprintf()将会忽略之,不做处理。但是,为什么最终结果没有%呢?我连续想歪了无数理由(基本功不扎实啊)。int main(int argc, char *argv[]) { int t = 5; char buf[100]; sprintf(buf, "%% Hello, world %d times! ", t); printf(buf); return 0; } //期望显示为:% Hello, world 5 times! //实际显示为:Hello, world 5 times! //想打印的%没有打印出来
//为了清楚起见,我把字符串都用""给括起来 sprintf(buf, "%% Hello, world %d times! ", t); //执行后的buf其实是"% Hello, world 5 times!" printf(buf); //printf("% Hello, world 5 times!");的结果是"Hello, world 5 times!",一个%会被忽略掉哈哈,所以说,要想先用sprintf(),最后又用printf()去打印buf,就要这么写才行:
#include嘿嘿,让大家见笑了。^_^int main(int argc, char *argv[]) { int t = 5; char buf[100]; sprintf(buf, "%%%% Hello, world %d times! ", t); printf(buf); return 0; } //结果显示为:% Hello, world 5 times!