标签: printf

snprintf和sprintf解释

有人可以向我解释这个简单程序的输出:

#include <stdio.h>

int main(int argc, char *argv[])
{
    char charArray[1024] = "";
    char charArrayAgain[1024] = "";
    int number;

    number = 2;

    sprintf(charArray, "%d", number);

    printf("charArray : %s\n", charArray);

    snprintf(charArrayAgain, 1, "%d", number);
    printf("charArrayAgain : %s\n", charArrayAgain);

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

输出是:

./a.out 
charArray : 2
charArrayAgain : // Why i don't have 2 here?
Run Code Online (Sandbox Code Playgroud)

谢谢.

c printf string-formatting

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

在正数之前加一个加号?

我打印的浮点数在零之后被修剪为3位数,我想知道我是否可以有条件地追加一个+正数之前的数字,所以我得到

+0.005
Run Code Online (Sandbox Code Playgroud)

为了积极的改变和

-0.005
Run Code Online (Sandbox Code Playgroud)

为了消极的改变.这是否可以在printf中轻松实现?

python printf

11
推荐指数
2
解决办法
6272
查看次数

OCaml Printf.sprintf

为什么会出现这种情况?

# Printf.sprintf ("Foo %d %s") 2 "bar";;
- : string = "Foo 2 bar"

# Printf.sprintf ("Foo %d" ^ " %s") 2 "bar";;
  Printf.sprintf ("Foo %d" ^ " %s") 2 "bar";;
Error: This expression has type string but an expression was expected of type
         ('a -> 'b -> 'c, unit, string) format =
           ('a -> 'b -> 'c, unit, string, string, string, string) format6
Run Code Online (Sandbox Code Playgroud)

我希望首先评估字符串连接,所以一切都会正常进行.这与Printf采用的类型系统技巧有关吗?

printf ocaml type-systems

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

11
推荐指数
2
解决办法
6461
查看次数

在> 65KB字符串上使用printf命中了哪个瓶颈?

该程序每行打印65k字节.

我测量吞吐量./a.out | pv >/dev/null并达到3 GB/s左右.

一旦我将线路长度更改为70k,吞吐量就会下降到~1 GB/s.

我在这里遇到了哪个瓶颈(CPU缓存,libc idiosynchrasy等)?

#include <stdio.h>
#include <string.h>

#define LEN 65000     // high throughput
// #define LEN 70000  // low throughput

int main ()
{
  char s[LEN]; memset(s, 'a', LEN-1); s[LEN-1] = '\0';

  while (1)
    printf ("%s\n", s);
}
Run Code Online (Sandbox Code Playgroud)

更新:我在Core i5-2520M上运行64位Ubuntu 12.04,它有EGLIBC 2.15.

更新: puts (s)有同样的问题.

c performance benchmarking printf caching

11
推荐指数
1
解决办法
303
查看次数

将原始数据打印到固定长度的十六进制输出

我有一个结构,指向结构的指针,我希望将前n个字节打印为长十六进制数,或者作为十六进制字节的字符串.

基本上我需要printf等效的gdb的检查内存命令,x/nxb.

如果可能的话,我仍然希望使用printf作为程序的记录器功能只是它的变体.如果我可以在不循环数据的情况下这样做,那就更好了.

c format printf hex

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

strcat()用于格式化字符串

我正在我的程序中逐个构建一个字符串,当我在末尾添加一个简单的字符串时,我正在混合使用strcat(),但是当我添加一个格式化的字符串时,我正在使用sprintf(),例如:

int one = 1;
sprintf(instruction + strlen(instruction), " number %d", one);
Run Code Online (Sandbox Code Playgroud)

是否可以使用strcat()连接格式化的字符串或者首选方法是什么?

c string printf concatenation

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

使用printf格式在C中打印等宽列

我想在C中使用printf打印列.我写了这段代码:

#include <stdio.h>

void printme(char *txt1, char *txt2, char *txt3)
{
    printf("TXT1: %9s TXT2 %9s TXT3 %9s\n", txt1, txt2, txt3);
}


int main()
{
    printme("a","bbbbbbbeeeeebbbbb","e");
    printme("aaaaaaaa","bbbbbbbbbbbb","abcde");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我有这样的输出:

TXT1:         a TXT2 bbbbbbbeeeeebbbbb TXT3         e
TXT1:  aaaaaaaa TXT2 bbbbbbbbbbbb TXT3     abcde
Run Code Online (Sandbox Code Playgroud)

所以列不是等宽的.基本上,我想这样做,无论我的论证中的文本有多长,我的函数总是打印出一个很好的格式化列.问题是:我该怎么做?

saing nice我的意思是无论文本传递给我的打印功能多长时间,它都会打印出等宽列,例如:

我有这样的输出,如下所示:

a         cd`           fg           ij  
a         cd             fg           ij  
a         cd             fg           ij  
ab         cd             fg           ij  
ab         cd             fg           i j   
ab         cd             fg           ij  
ab         cd             fg           ij  
ab         cde             fgh         ij …
Run Code Online (Sandbox Code Playgroud)

c printf

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

管道seq到printf进行数字格式化

我正在尝试使用printf和seq打印以下模式:

0000
0001
0002
0003
Run Code Online (Sandbox Code Playgroud)

我的问题是我曾经使用过:

seq 0 10 | xargs printf %04d
Run Code Online (Sandbox Code Playgroud)

我的所有输出格式化为相同的行likeo:

0000000100020003
Run Code Online (Sandbox Code Playgroud)

我仍然无法使用xargs.在这种情况下如何正确使用它?

bash printf xargs seq

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

对有趣的printf()语句感到困惑

通过阅读此代码,我偶然发现了以下printf()声明:

// reset, hide cursor and clear screen
printf("\e[0m\e[?25l\e[2J");
Run Code Online (Sandbox Code Playgroud)

我必须承认,我不是一名完全合格的C黑客,并且不完全理解这一点.我调整了一下,删除了论点,我理解它的作用(好吧,评论实际上说的都是这样),但我不知道它是如何完成的.此外,这是一个很难谷歌的东西.

这个printf()电话怎么样?

c printf

11
推荐指数
2
解决办法
897
查看次数