意外的格式字符串行为

时间:2013-07-13 21:40:20

标签: python c printf string-formatting

我刚刚遇到了python中奇怪的字符串格式化行为。原来是由回车字符('\ r')引起的,我不知道有没有。这是一个例子:

>>> text = 'hello\r'
>>> '(SUBJECT "%s")' % (text)
'(SUBJECT "hello\r")'
>>> print '(SUBJECT "%s")' % (text)
")UBJECT "hello

我在C(在几台机器上)尝试了同样的事情作为一个完整性检查。

#include <stdio.h>

int main()
{
    char *text = "hello\r";
    printf("(SUBJECT \"%s\")\n", text);
    return 0;
}

输出:

% ./a.out
")UBJECT "hello

这是理想的行为吗?如果是这样,有人可以解释发生了什么吗?

1 个答案:

答案 0 :(得分:8)

它(\ r)是没有换行的carridge返回,因此光标移回当前行的开头而不移动到新行,因此覆盖已经显示的内容。

行为取决于您的控制台以及它是否将CR和LF解释为单独的操作。

相关问题