标签: printf

在printf中Java的"%n"有什么用?

我正在阅读Effective Java,它%n用于所有地方的换行符.我\n在Java程序中使用了相当成功的换行符.

哪个'正确'?怎么了\n?为什么Java改变了这个C约定?

java printf newline

98
推荐指数
6
解决办法
8万
查看次数

在printf中填充字符

我正在编写一个bash shell脚本来显示进程是否正在运行.

到目前为止,我得到了这个:

printf "%-50s %s\n" $PROC_NAME [UP]
Run Code Online (Sandbox Code Playgroud)

代码给了我这个输出:

JBoss                                              [DOWN]

GlassFish                                          [UP]

verylongprocessname                                [UP]
Run Code Online (Sandbox Code Playgroud)

我想用' - '或'*'填补两个字段之间的空白,使其更具可读性.如何在不扰乱田地对齐的情况下做到这一点?

我想要的输出是:

JBoss -------------------------------------------  [DOWN]

GlassFish ---------------------------------------  [UP]

verylongprocessname -----------------------------  [UP]
Run Code Online (Sandbox Code Playgroud)

bash shell printf

98
推荐指数
9
解决办法
10万
查看次数

printf中的"%.*s"是什么意思?

我有一个代码片段,其中有一个

printf("%.*s\n")
Run Code Online (Sandbox Code Playgroud)

什么%.*s意思?

c printf format-specifiers

98
推荐指数
4
解决办法
7万
查看次数

当输出重定向到文件时,printf()和system()的结果顺序错误

我有一个C程序编译成一个名为myprogram的可执行文件.这是它的主要功能:

int main(int argc, char ** argv) {
  printf("this is a test message.\n");
  system("ls");

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我myprogram > output.txt在Linux shell中运行然后检查output.txt时,我看到ls上面列出的输出"这是一条测试消息".

我觉得应该是相反的方式.为什么会发生这种情况,我能做些什么,以便"这是一条测试消息"出现在output.txt的顶部?

如果重要的话,我是C的新手并且在命令行中工作.

c linux printf child-process io-redirection

98
推荐指数
3
解决办法
4834
查看次数

使用带有非null终止字符串的printf

假设你有一个未null终止的字符串并且你知道它的确切大小,那么如何printf在C中打印该字符串呢?我记得这样的方法,但现在我找不到...

c string format printf

97
推荐指数
4
解决办法
5万
查看次数

我如何在C中打印到stderr?

在C中,使用printffrom 来打印到标准输出很容易stdio.h.

但是,如何打印到stderr?我们可以fprintf用来实现它,但它的语法似乎很奇怪.也许我们可以printf用来打印到stderr?

c printf stderr

97
推荐指数
5
解决办法
18万
查看次数

uint32_t和size_t的printf格式说明符

我有以下内容

size_t   i = 0;
uint32_t k = 0;

printf("i [ %lu ] k [ %u ]\n", i, k);
Run Code Online (Sandbox Code Playgroud)

编译时我收到以下警告:

format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Run Code Online (Sandbox Code Playgroud)

当我使用夹板运行时,我得到以下内容:

Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

c printf

96
推荐指数
4
解决办法
19万
查看次数

Python的许多字符串格式化方法 - 旧的(将要)被弃用了吗?

Python至少有六种格式化字符串的方法:

In [1]: world = "Earth"

# method 1a
In [2]: "Hello, %s" % world
Out[2]: 'Hello, Earth'

# method 1b
In [3]: "Hello, %(planet)s" % {"planet": world}
Out[3]: 'Hello, Earth'

# method 2a
In [4]: "Hello, {0}".format(world)
Out[4]: 'Hello, Earth'

# method 2b
In [5]: "Hello, {planet}".format(planet=world)
Out[5]: 'Hello, Earth'

# method 2c
In [6]: f"Hello, {world}"
Out[6]: 'Hello, Earth'

In [7]: from string import Template

# method 3
In [8]: Template("Hello, $planet").substitute(planet=world)
Out[8]: 'Hello, Earth'
Run Code Online (Sandbox Code Playgroud)

不同方法的简要历史:

  • printf自Pythons婴儿期以来,风格格式一直存在 …

python printf string-formatting backwards-compatibility deprecated

96
推荐指数
5
解决办法
2万
查看次数

在C++中清除printf size_t的代码(或者:C++中C99的%z的最近等价物)

我有一些C++代码打印出size_t:

size_t a;
printf("%lu", a);
Run Code Online (Sandbox Code Playgroud)

我希望在32位和64位架构上编译时不会发出警告.

如果这是C99,我可以使用printf("%z", a);.但是AFAICT %z在任何标准C++方言中都不存在.所以相反,我必须这样做

printf("%lu", (unsigned long) a);
Run Code Online (Sandbox Code Playgroud)

这真的很难看.

如果没有size_t内置于该语言中的打印功能,我想知道是否可以编写一个printf包装器或类似的东西,这样可以在size_ts 上插入适当的强制转换,以便在保持好的编译器警告的同时消除虚假的编译器警告.

有任何想法吗?


编辑为了澄清为什么我使用printf:我有一个相对较大的代码库,我正在清理.它使用printf包装器来执行诸如"编写警告,将其记录到文件以及可能退出错误的代码"之类的操作.我可能能够用cout包装器来运行足够的C++ - foo,但是我不想改变程序中的每个warn()调用,只是为了摆脱一些编译器警告.

c++ printf size-t

94
推荐指数
7
解决办法
7万
查看次数

"退格"转义字符'\ b':意外行为?

所以我终于通过K&R阅读,并且我在前几页中学到了一些东西,即有一个退格转义字符\b.

所以我去测试它,并且有一些非常奇怪的行为:

#include <stdio.h>

main ()
{
    printf("hello worl\b\bd\n");
}
Run Code Online (Sandbox Code Playgroud)

输出是

hello wodl
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

c language-agnostic printf special-characters backspace

91
推荐指数
4
解决办法
13万
查看次数