printf()与fprintf()函数的问题

2014-11-24 02:53:06 · 作者: · 浏览: 1

下面代码直接Segment fault出错:
Java代码
printf(">@; .=@ >)>%25135501313>;0=71-<;2;6%:<>;#####");

原因可能是遇到%号后,开始算占位符,至于占位符具体怎么算还不是太清楚,出现段错误是因为后面的变长参数可能不匹配导致的。上面代码变长参数为0。

若要输出%,还得:
Java代码
printf("%%")


bug产生的原因是使用方法不正确,后面那句对于异常字符串可能产生异常,而前面的则不会:
Java代码
fprintf(stdout, "%s", str->s);
fprintf(stdout, str->s);

作者“Some thing on techology”