标签: printf

如何将printf的输出存储在变量中?

我想将printf格式的输出存储在变量中,但由于某种原因它会删除格式.

这是正确的输出

$ printf "%-40s %8s %9s  %7s" "File system" "Free" "Refquota" "Free %"
File system                                  Free  Refquota   Free 
Run Code Online (Sandbox Code Playgroud)

现在格式化了

$ A=$(printf "%-40s %8s %9s  %7s" "File system" "Free" "Refquota" "Free %")
$ echo $A
File system Free Refquota Free %
Run Code Online (Sandbox Code Playgroud)

linux bash printf echo

3
推荐指数
2
解决办法
3211
查看次数

有没有办法修复stdint类型的格式说明符警告?

问题是在一个平台上(windows,mvsc2015)uint64_t被定义为unsigned long long另一个平台(ubuntu,clang),unsigned long并且有代码看起来像 sprintf(buffer, "%#llx", u64key);

c printf typedef stdint

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

获取printf以打印所有浮动数字

我对这种行为感到困惑printf("%f", M_PI).它打印出来3.141593,但是M_PI是3.14159265358979323846264338327950288.为什么printf会这样做,如何让它打印出整个浮动.我知道%1.2f格式说明符,但如果我使用它们然后我得到一堆未使用的0并且输出很难看.我想要浮子的整个精度,但不是额外的任何东西.

c printf

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

使用log4cplus时可以使用printf格式吗?

log4cplus是否提供了以C-Style/printf格式打印的API?

原因:我想在C代码中使用log4cplus(除了C++之外)并且不想事先准备好字符串.

c printf log4cplus

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

在C中的其他输出之间打印数组元素

我试图将我的数独求解程序的结果打印到终端中,如下所示:

  +-------+-------+-------+
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  +-------+-------+-------+
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 |
  | 1 2 3 | 4 5 6 | 7 8 9 …
Run Code Online (Sandbox Code Playgroud)

c arrays printf

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

bash printf两列中的两个数组

我想说数组ar1和ar2我希望这两个数组都打印在两列中.

  printf "%s\t%s\n" "${ar1[@]}" "${ar2[@]}"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

arrays bash printf

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

在Julia中打印具有特定字符串长度宽度的数字

在朱莉娅,当我想要打印宽度为10的数字"4"时,我会:

@printf("%10d", 4)
Run Code Online (Sandbox Code Playgroud)

如果我想将宽度设置为特定字符串的长度,例如:

mystr = "Hello World"
Run Code Online (Sandbox Code Playgroud)

如何将"%10d"中的10改为length(mystr)?

printf julia

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

C++相当于printf()或格式化输出

我对C++世界比较陌生.我知道std::cout用于C++中的控制台输出.但请考虑C中的以下代码:

#include<stdio.h>

int main(){
    double dNum=99.6678;
    printf("%.02lf",dNum);
    //output: 99.67
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何cout在C++中使用最多2位小数的双重类型值实现类似的格式化?

我知道C++与C向后兼容.但是如果有的话,C++中是否有printf()等价,那么它定义在哪里?

c++ printf cout

3
推荐指数
2
解决办法
6974
查看次数

为什么参数与printf未定义的行为中的转换说明符不匹配?

在C(n1570 7.21.6.1/10)和C++(通过包含C标准库)中,未定义的行为是为printf提供其类型与其转换规范不匹配的参数.一个简单的例子:

printf("%d", 1.9)
Run Code Online (Sandbox Code Playgroud)

格式字符串指定int,而参数是浮点类型.

这个问题的灵感来自于一个用户遇到遗留代码的问题,这些代码存在大量的转换不匹配,这显然没有任何损害,参见 理论和实践中未定义的行为.

声称格式不匹配UB起初看起来很激烈.很明显,输出可能是错误的,具体取决于精确的不匹配,参数类型,字节序,可能的堆栈布局和其他问题.正如一位评论员指出的那样,这也延伸到后来的(甚至是之前的?)论点.但这远不是一般的UB.就个人而言,除了预期的错误输出外,我从未遇到任何其他问题

冒险猜测,我会排除对齐问题.我可以想象的是,提供一个格式字符串,使得printf期望大数据和小的实际参数可能让printf读取超出堆栈,但我缺乏对var args机制和特定printf实现细节的深入了解来验证.

我快速浏览了printf源代码,但它们对于休闲读者来说非常不透明.

因此我的问题是:错误匹配转换说明符和printf使其成为UB的参数有哪些具体危险?

c c++ printf undefined-behavior

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

在c中获得负面地址

#include <stdio.h>
int main(void) {
    int a[5] = {0, 1, 2, 3, 4}, *p;
    p = a;
    printf("%d\n%d\n%d\n%d\n%d\n", p, *p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我执行此代码时,我得到p的负值.我研究过地址不能否定.那为什么我有一个负值

c arrays printf pointers

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

标签 统计

printf ×10

c ×6

arrays ×3

bash ×2

c++ ×2

cout ×1

echo ×1

julia ×1

linux ×1

log4cplus ×1

pointers ×1

stdint ×1

typedef ×1

undefined-behavior ×1