printf,这是怎么回事?

vagrant_ch 2007-10-15 11:27:55
简单的打印语句,在各种不同的编译环境下结果各不相同,请问是怎么一回事?

#include <stdio.h)
int main()
{
printf("123\t\0128\b123\ta\bb");
return 0;
}

在VC下和TC下的结果是不一样的,而且用strlen来判断整个字符串的长度感觉也是错的。

按人工分析结果应该是:
123。。。。。
123。。。。。b
(句号表示空格)

可以尝试着在各种不同的编译环境下运行,分析下为什么结果不一样呢?tks
...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happytang 2007-10-16
  • 打赏
  • 举报
回复
探讨这个没意义
phnessu4 2007-10-16
  • 打赏
  • 举报
回复
已此顺序输出,如果没记错\b是什么东西的话....

123
制表符
\0128(八进)
后退一格,删字符
123
制表符
a
后退一格,删字符
b
vagrant_ch 2007-10-15
  • 打赏
  • 举报
回复
搞混了一个,关于字符串的长度应该就是实实在在的字符个数,而不是说在屏幕显示出的几个字符宽度。如'\t'指的应该就是一个字符长度,而不是屏幕显示上的8个宽度。
iambic 2007-10-15
  • 打赏
  • 举报
回复
哦,是我搞错了。'\012'是一个字符,八进制表示。
iambic 2007-10-15
  • 打赏
  • 举报
回复
C字符串是以\0结束的。你的字符串有效值到第一个\0就结束了。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧