标签: printf

什么是C的printf%g格式说明符的Java等价物?

我尝试使用Formatter.format,但这似乎将尾数留在带有0尾数的数字上,而C版本却没有.在Java中是否有相当于C的%g格式说明符,如果没有,有没有办法伪造它?出于兼容性原因,我的目的是保持尾数与C完全相同.

foo.c的

#include <stdio.h>

int main (int argc, char const *argv[])
{
    printf("%g\n", 1.0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Main.java

class Main {
        public static void main(String[] args) {
                System.out.printf("%g\n", 1.0);
        }
}
Run Code Online (Sandbox Code Playgroud)

安慰:

$ javac Main.java && java Main
1.00000
$ gcc foo.c && ./a.out
1
Run Code Online (Sandbox Code Playgroud)

类似地,使用1.2作为输入,Java版本中的尾数较长

$ javac Main.java && java Main
1.20000
$ gcc foo.c && ./a.out
1.2
Run Code Online (Sandbox Code Playgroud)

c java printf formatter

7
推荐指数
1
解决办法
6681
查看次数

是否有asprintf的wchar_t版本?

我需要一个C函数,它返回格式化字符串的最终长度,这样我就可以正确地分配目标字符串,而不是自己计算长度.snprintf由于无法编写整个字符串,这就是其中的一个,但不幸的是,它没有广泛的字符替代品.

swprintf 如果出现错误则返回-1,而不是所需的长度(为什么不是相同的行为?!?)

提到的标题asprintf似乎也没有帮助,因为它只提供非宽版本.

_vscwprintf 可以在Windows上使用,但我需要一个跨平台,标准版本或至少一个Linux版本,我将#ifdef代码.

有任何想法吗?谢谢!

c printf wchar-t

7
推荐指数
1
解决办法
1784
查看次数

strftime性能与snprintf

我遇到了一个有趣的性能难题,但在我开始深入研究glibc并在左右中心输入错误之前,我只想获得可能存在的任何洞察力.

我有一个代码,在其中一个函数中执行此操作:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
strftime( result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);
Run Code Online (Sandbox Code Playgroud)

其余代码与此问题无关.当我用这个替换它:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
snprintf(result, sizeof(result), "%04d-%02d-%02d %02d:%02d:%02d",
         local_tm.tm_year+1900, local_tm.tm_mon+1,
         local_tm.tm_mday, local_tm.tm_hour, local_tm.tm_min,
         local_tm.tm_sec);
Run Code Online (Sandbox Code Playgroud)

平均而言,我的性能提升了20%.

有没有人碰到这个?这个操作系统特定吗?

c c++ performance printf strftime

7
推荐指数
1
解决办法
1709
查看次数

printf样式格式化函数内的可变插值

有没有办法在Objective-C(甚至C)中的printf样式字符串格式化函数中传递浮点精度参数的变量?例如,在TCL和其他脚本语言中,我可以这样做:

set precision 2
puts [format "%${precision}f" 3.14159]
Run Code Online (Sandbox Code Playgroud)

当然,输出将是3.14.我想在Objective-C中做类似的事情:

float precision = 2
NSString *myString = [NSString stringWithFormat:@".2f", 3.14159]
Run Code Online (Sandbox Code Playgroud)

除了我想将精度包含在变量中.如何才能做到这一点?

printf objective-c

7
推荐指数
1
解决办法
1875
查看次数

如何使用bash从模板编写脚本文件?

我正在尝试为我们的内部开发服务器自动设置站点.

目前,这包括创建系统用户,mysql用户,数据库和apache配置.我知道如何在一个bash文件中完成所有操作,但我想问一下是否有办法更干净地生成apache配置.

基本上我想要做的是生成基于模板的conf文件,类似于使用printf.我当然可以使用printf,但我认为可能有一种更干净的方式,使用sed或awk.

我不只是想使用printf的原因是因为apache配置大约有20行,并且会占用大部分bash脚本,并且使其更难阅读.

任何帮助表示赞赏.

bash awk printf sed

7
推荐指数
2
解决办法
5403
查看次数

哪个更好 - printf或fprintf

我知道这两个函数都可以用来输出到控制台.
我读了这个问题,但没有人告诉我在输出到控制台时更喜欢使用哪个.那么哪个功能更好,有什么重大差异吗?

c printf output

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

在java中使用printf换一个新行?%n是否正确?

新手在这里,但我最终在我的智慧.我已经完成了我的程序,但是在打印时只需要格式化方面的帮助.

if(count == 3)
    System.out.printf ("%-15s %15s %15s %15s %15s %n", n, " is compatible with 
                         ",dates[k],dates[k+1],dates[k+2]);
Run Code Online (Sandbox Code Playgroud)

我的输出是

Stacey Francis   is compatible with     Owen Farrell   Jack Clifford  Joshua Watkins 
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是(不重复斯泰西弗朗西斯名称或"兼容":

Stacey Francis   is compatible with  Owen Farrell

                          Jack Clifford

                          Joshua Watkins
Run Code Online (Sandbox Code Playgroud)

只是想知道如何解决这个问题?

谢谢,

科斯蒂

java string printf

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

如何在bash中连接用printf格式化的字符串

我需要在循环中连接几个字符串并将结果赋值给变量:

格式化字符串示例:

result=$(printf '| %-15s| %-25s| %-15s| %-15s| %-15s\n' $size $name $visits $inbound $outbound);
Run Code Online (Sandbox Code Playgroud)

从我的角度来看,它应该像这样工作:

result=''
while read somevar
do
    ...
    outbound=`cat "$www_path/$name/access.log"|grep \`date +"%d/%b/%Y"\`|awk '{ sum+=$11} END {print sum/1024/1024}'`
    result=$(printf '%s| %-15s| %-25s| %-15s| %-15s| %-15s\n' $result $size $name $visits $inbound $outbound);
    ...
done
echo $result
Run Code Online (Sandbox Code Playgroud)

但它没有:(

UPD:

完整代码列表如下:

www_path='/var/www';
result='';
cd /var/www/; ls -d */ | while read i ; do basename "$i" ; done
while read i;
do du -sh "$i"|
        while read size name
        do
                visits=`cat …
Run Code Online (Sandbox Code Playgroud)

bash shell printf

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

C中的sprintf重置计数变量的值

我在运行它时在C中重置sprintf的问题时重置计数器变量的值.简而言之,正在发生的事情:

int count = 0;
count++;
printf("%d\n", count); // count will equal 1
char title[7];
sprintf(title, "%.3d.jpg", count);
printf("%d\n", count); // count now equals 0 again
Run Code Online (Sandbox Code Playgroud)

这是sprintf的正常行为吗?

c printf

7
推荐指数
1
解决办法
1914
查看次数

printf("%d")不显示我输入的内容

我的代码:

printf("Enter a number : ");

scanf("%d", &number);

printf("%d is what I entered\n", &number);
Run Code Online (Sandbox Code Playgroud)

我输入了2,

预期产量: 2 is what I entered

实际产量: 2293324 is what I entered

这有什么问题?

c printf

7
推荐指数
2
解决办法
449
查看次数

标签 统计

printf ×10

c ×6

bash ×2

java ×2

awk ×1

c++ ×1

formatter ×1

objective-c ×1

output ×1

performance ×1

sed ×1

shell ×1

strftime ×1

string ×1

wchar-t ×1