草庐IT

xil_printf

全部标签

go - 有没有办法重用 fmt.Printf 中的参数?

我有一种情况,我想使用我的printf参数两次。fmt.Printf("%d%d",i,i)有没有办法告诉fmt.Printf只重用相同的i?fmt.Printf("%d%d",i) 最佳答案 您可以使用[n]表示法来指定显式参数索引,如下所示:fmt.Printf("%[1]d%[1]d\n",i)这是一个完整的示例,您可以尝试:http://play.golang.org/p/Sfaai-XgzN 关于go-有没有办法重用fmt.Printf中的参数?,我们在StackOverflo

c - 使用 printf 的 %s 说明符打印 NULL 的行为是什么?

遇到一个有趣的面试问题:test1:printf("test%s\n",NULL);printf("test%s\n",NULL);prints:test(null)test(null)test2:printf("%s\n",NULL);printf("%s\n",NULL);printsSegmentationfault(coredumped)虽然这可能在某些系统上运行良好,但至少我的系统抛出了段错误。这种行为的最佳解释是什么?上面的代码是C语言。以下是我的gcc信息:deep@deep:~$gcc--versiongcc(Ubuntu/Linaro4.6.3-1ubuntu5)4.

c - 即使我将输出重定向到/dev/null,printf 仍然会产生成本吗?

我们有一个包含大量打印消息的守护进程。由于我们正在开发具有弱CPU和其他约束硬件的嵌入式设备,因此我们希望在最终版本中最小化printf消息的任何类型的成本(IO、CPU等)。(用户没有控制台)我和我的队友意见不合。他认为我们可以将所有内容重定向到/dev/null。它不会花费任何IO,因此情感将是最小的。但我认为它仍然会消耗CPU,我们最好为printf定义一个宏,这样我们就可以重写“printf”(也许只是返回)。所以我需要一些关于谁是对的意见。Linux会足够聪明以优化printf吗?我真的很怀疑。 最佳答案 差不多。当您将程

c - 如何避免在信号处理程序中使用 printf?

自printf不可重入,在信号处理程序中使用它不应该是安全的。但是我看过很多使用printf的示例代码这样。所以我的问题是:我们什么时候需要避免使用printf在信号处理程序中,是否有推荐的替代品? 最佳答案 您可以使用一些标志变量,在信号处理程序中设置该标志,并基于该标志调用printf()正常运行期间main()或程序的其他部分中的函数。Itisnotsafetocallallfunctions,suchasprintf,fromwithinasignalhandler.Ausefultechniqueistouseasigna

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

这个问题在这里已经有了答案:Whydoeswrite()printbeforeprintf()inoutputredirection?(3个回答)Whydoesprintfnotflushafterthecallunlessanewlineisintheformatstring?(10个回答)关闭4年前。我有一个C程序,可以编译为名为myprogram的可执行文件。这是它的主要功能:intmain(intargc,char**argv){printf("thisisatestmessage.\n");system("ls");return0;}当我在Linuxshell中运行mypro

java - printf 中 Java 的 "%n"是怎么回事?

我正在阅读EffectiveJava,它在任何地方都使用%n作为换行符。我已经在J​​ava程序中成功地使用了\n换行符。哪个是“正确”的?\n有什么问题?为什么Java改变了这个C约定? 最佳答案 来自快速谷歌:Thereisalsoonespecifierthatdoesn'tcorrespondtoanargument.Itis"%n"whichoutputsalinebreak.A"\n"canalsobeusedinsomecases,butsince"%n"alwaysoutputsthecorrectplatform-

c++ - 使用 printf 打印 size_t 的正确方法是什么?

Size_t被定义为一个unsigned整数,但它的大小取决于您是在32位还是64位机器上。打印出size_t的正确且可移植的方法是什么? 最佳答案 尝试使用%zu格式字符串size_tval=get_the_value();printf("%zu",val);z部分是一个长度说明符,表示参数的长度为size_t。来源-http://en.wikipedia.org/wiki/Printf#printf_format_placeholders 关于c++-使用printf打印size_t

c++ - 如何将可变数量的参数传递给 printf/sprintf

我有一个类,它包含一个“错误”函数,它将格式化一些文本。我想接受可变数量的参数,然后使用printf对其进行格式化。示例:classMyClass{public:voidError(constchar*format,...);};Error方法应该接受参数,调用printf/sprintf对其进行格式化,然后对其进行处理。我不想自己编写所有格式,因此尝试弄清楚如何使用现有格式是有意义的。 最佳答案 voidError(constchar*format,...){va_listargptr;va_start(argptr,format

c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++)

我有一些打印size_t的C++代码:size_ta;printf("%lu",a);我希望在32位和64位架构上编译时不会出现警告。如果这是C99,我可以使用printf("%z",a);。但是AFAICT%z在任何标准C++方言中都不存在。所以相反,我必须这样做printf("%lu",(unsignedlong)a);真的很丑。如果没有打印语言内置的size_t的工具,我想知道是否可以编写一个printf包装器或类似的东西,以便在size_t上插入适当的类型转换>s以消除虚假的编译器警告,同时仍然保持良好的警告。有什么想法吗?编辑澄清我使用printf的原因:我有一个相对较大的代

c++ - 有没有办法指定使用 printf() 打印出字符串的多少个字符?

有没有办法指定要打印出字符串的多少个字符(类似于ints中的小数位)?printf("Herearethefirst8chars:%s\n","Astringthatismorethan8chars");想要打印:这里是前8个字符:一个字符串 最佳答案 基本方式是:printf("Herearethefirst8chars:%.8s\n","Astringthatismorethan8chars");另一种通常更有用的方法是:printf("Herearethefirst%dchars:%.*s\n",8,8,"Astringtha