系统移植,printf的有关问题.路过有分

系统移植,printf的问题.路过有分
手上有个移植工作

在代中使用例如   printf( "%04s ",   "abc ");

在Win   AIX   ScoUnix下均输出   "0abc "
在红帽Linux下输出   "   abc "

请问如何让Linux保持和Win   AIX   ScoUnix系统一致?

谢谢!

有牛人说   好像gcc有个编译开关的,谁知道?


只写符合ANSI标准的c代码.


跟编译器应该无关吧。编译器最多给个warning。应该是libc的问题。

man printf

0 The value should be zero padded. For d, i, o, u, x, X, a, A,
e, E, f, F, g, and G conversions, the converted value is
padded on the left with zeros rather than blanks. If the 0
and – flags both appear, the 0 flag is ignored. If a preci-
sion is given with a numeric conversion (d, i, o, u, x, and
X), the 0 flag is ignored. For other conversions, the behav-
ior is undefined.

没有对s的支持。最好的方法,别用%0s. 大不了用sprintf打印到buffer里改把改把再打。


http://blog.tianya.cn/blogger/post_show.asp?idWriter=0&Key=0&BlogID=462085&PostID=8363874

看看上面这个对你有帮助不?


俺仅仅路过,能不能用最土的预编译解决呀
#ifdef
#else
#endif


应该可以用sprintf到buffer中,再进行输出


你写的复杂了。最简单的方法,就用%s打印到buffer里。strlen比较,前面的补0.
还有为什么前面一定要是0, 用 "%4s "前面补空格不一样的马?

还有谁说的#ifdef预编译最土? 有什么“不土“的方法可以替代#ifdef?

系统移植,printf的有关问题.路过有分

相关文章:

你感兴趣的文章:

标签云: