一个快速的问题.我在写:
puts "%.3f %.4f %.5f" % [3.998877, 3.998877, 3.998877]
Run Code Online (Sandbox Code Playgroud)
并获得以下输出:
3.999 3.9989 3.99888
Run Code Online (Sandbox Code Playgroud)
sprintf简单地围绕数字.如何限制舍入?
#include<stdio.h>
int main()
{
printf("He %c llo",65);
}
Run Code Online (Sandbox Code Playgroud)
输出:他A爱
#include<stdio.h>
int main()
{
printf("He %c llo",13);
}
Run Code Online (Sandbox Code Playgroud)
输出:llo.它不打印他.
我可以理解,65是A的ascii值,因此A在第一种情况下打印,但为什么llo在第二种情况下.
谢谢
我正在尝试调试mvn compile具有许多依赖关系的文件javac.
这就是我试图这样做的方式:
CLASSPATH=`find ~/.m2 -name *.jar -print0`; javac -verbose BogusFile.java
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不知道如何告诉find将unix文件separator(:)中找到的每个jar分开.
也许-printf有解决方案?
我希望以这样的方式修改我的代码,使列扩展以容纳数据.
下面是一个断行的示例
+========+=========+===============+=============+=============+
| Record | Cluster | Current Build | Current Use | Environment |
+--------+---------+---------------+-------------+-------------+
| 3 | 1 | v44 | v44 Live (currently - new company cluster)| PROD |
+--------+---------+---------------+-------------+-------------+
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的(kludgy)代码
sub printData {
if (@_) {
# print the data grid top border
printf ("%10s%10s%15s%14s%14s",'+'.('=' x 8).'+',('=' x 9).'+',('=' x 15).'+',('=' x 13).'+',('=' x 13).'+');
print "\n";
# print the data grid column titles
printf ("%-9s%-10s%-16s%-14s%-15s",'| Record ','| Cluster ','| Current Build ','| Current Use …Run Code Online (Sandbox Code Playgroud) 我发现了一些有趣的东西,但无法解释它.我正在编写一个简单的例程来反转字符串.这很好,没有抱怨.
我的问题在于printf.当我单独打印原始字符串时,它打印正确,但是当我打印原始字符串作为第一个arg,而函数调用reverse作为第二个时,两者都显示为反转.
输出:
|| abcdthelgko ||
Orig Str:| okglehtdcba |,Rev Str | okglehtdcba |
码:
char* ReverseStr(char* str, int len)
{
char *start = &str[0], *end = &str[len-1];
char temp;
while(start < end)
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
return str;
}
int main()
{
char str_unique[] = "abcdthelgko";
int str_unique_len = sizeof(str_unique)/sizeof(str_unique[0]);
printf("\n || %s || \n", str_unique);
printf("Orig Str: | %s |, Rev Str | %s |\n", str_unique, ReverseStr(str_unique, …Run Code Online (Sandbox Code Playgroud) 我有几行输出,如下所示:
printf("%-20s %-20s %-20s %-20s %-20s \n", "Identity", "Identity", "float", "double", "long double");
printf("%-20s %-20s %-20s %-20s %-20s \n", "Number", "LHS", "error", "error", "error");
Run Code Online (Sandbox Code Playgroud)
如你所见,如果我想改变它们之间的间距,我将不得不将数字改为20次.有没有办法参数化格式说明符?那么只改变一次会改变它们吗?
我想产生以下输出:
> Avril Stewart 99 54
> Sally Kinghorn 170 60
> John Young 195 120
> Yutte Schim... 250 40
Run Code Online (Sandbox Code Playgroud)
如您所见,短于14个字符的名称将用空格填充.截断超过15个字符的名称:'Yutte Schimmelpenninck'截断为'Yutte Schim ......'.
以下是我试图做到这一点(变量$name,$height以及$weight从文件中提取,并运行一个循环的printf每个文件数据的命令):
printf '%-14s -%3s -%3s\n' "$name" "$height" "$weight"
> Avril Stewart 99 54
> Sally Kinghorn 170 60
> John Young 195 120
> Yutte Schimmelpenninck 250 40
Run Code Online (Sandbox Code Playgroud)
甲printf单行是所希望的解决方案.
什么代码会产生第一个输出块?
有人能告诉我在Angular 2 Typescript组件中使用完整的sprintf库(零填充和标准sprintf中通常存在的所有其他功能)所需的所有步骤吗?谢谢.
我试图以编程方式将字符串宽度值插入sprintf()格式.
期望的结果是
sprintf("%-20s", "hello")
# [1] "hello "
Run Code Online (Sandbox Code Playgroud)
但我想20在同一个电话中即时插入,以便它可以是任何数字.我试过了
sprintf("%%-%ds", 20, "hello")
# [1] "%-20s"
sprintf("%-%ds", 20, "hello")
# Error in sprintf("%-%ds", 20, "hello") :
# invalid format '%-%d'; use format %f, %e, %g or %a for numeric objects
sprintf("%-%%ds", 20, "hello")
# Error in sprintf("%-%%ds", 20, "hello") :
# invalid format '%-%%d'; use format %f, %e, %g or %a for numeric objects
Run Code Online (Sandbox Code Playgroud)
这有可能sprintf()吗?
使用C ++系列中的函数来打印类型值std::uint64_t(来自<cstdint>)的格式说明符是什么std::printf()?
C99有PRIu64(from <inttypes.h>),但对我来说还不是完全清楚PRIu64有效的C ++ 11,尽管我可以找到暗示。
没有PRIu64,据我所知,没有单一格式说明符可在所有情况下使用:
std::uint64_t将定义为unsigned long long,格式说明符将为%llu。std::uint64_t将被定义为unsigned long,格式说明符将为%lu。%llu在两种情况下都可以使用。