标签: printf

字符串格式表达式(Python)

String格式表达式:

'This is %d %s example!' % (1, 'nice')
Run Code Online (Sandbox Code Playgroud)

字符串格式化方法调用

'This is {0} {1} example!'.format(1, 'nice')
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢方法调用(第二个例子)的可读性,但由于它是新的,因此有可能随着时间的推移,这些中的一个或另一个可能会被弃用.您认为哪个不太可能被弃用?

python string printf deprecated

5
推荐指数
3
解决办法
2592
查看次数

C:sprintf和递归

在C中,是否可以在sprintf函数中使用递归?出于某种原因,当我这样做时,我遇到了分段错误:

inline char *TreeNode_toString(const TreeNode *node)
{
  char *out;

  if(TreeNode_isExternal(node)) // If the node has no children...
  {
    sprintf(out, "%s:%.2f", node->name, node->distance);
  }
  else // The node is strictly binary, so it will have two non-null children
  {
    char *l = TreeNode_toString(node->l); // l = left child
    char *r = TreeNode_toString(node->r); // r = right child
    sprintf(out, "(%s,%s):%.2f", l, r, node->distance);
  }

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

c recursion printf segmentation-fault

5
推荐指数
2
解决办法
1214
查看次数

printf浮点值的字符串格式

我有一个关于使用printf的问题.

char str[8];
float val = 2.334563;
sprintf(str, format, val);
printf("val = %s.\n", str);

val = -23.34563;
sprintf(str, format, val);
printf("val = %s.\n", str);

val = -0.02334563;
sprintf(str, format, val);
printf("val = %s.\n", str);

val = 233;
sprintf(str, format, val);
printf("val = %s.\n", str);
Run Code Online (Sandbox Code Playgroud)

预期的产出如下:

val = +2.3345
val = -23.345
val = -0.0233
val = +233.00
Run Code Online (Sandbox Code Playgroud)

我需要什么格式字符串?感谢您的关注.

c string printf string-formatting floating-point-conversion

5
推荐指数
1
解决办法
4243
查看次数

/ bin/bash printf不适用于除C之外的其他LANG

我有一个非常奇怪的问题/ bin/bash和一个使用printf格式化字符串的脚本.

我的脚本看起来像这样

rt=$(printf "%.3f" 13.234324245)
Run Code Online (Sandbox Code Playgroud)

差异,我计算数字13.23 ...以上.当我使用/ usr/bin/zsh时效果很好!偶然/ bin/sh可以做到(但它不能做if if ...)最大的问题是/ bin/bash似乎不理解printf或者当我不使用时确实有另一种格式化方式LANG=C.

我的LANG变量设置为de_AT.UTF-8然后我得到此错误:

/path/to/script: Zeile 12: printf: 13.234324245: Ungültige Zahl.
Run Code Online (Sandbox Code Playgroud)

所以它只是说我给printf的数字无效......

我需要以不同的方式运行printf吗?

编辑:问题似乎是在计算数字:

rt=$(printf "%.3f" $(echo "$res2 - $res1"|bc ))
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉bc使用a ,而不是.?

bash printf locale zsh

5
推荐指数
1
解决办法
3591
查看次数

如果`char`转换为`int`,为什么``%c'`存在于`printf`中?

在C你有"%c"和"%f"的格式标志printf-和scanf式的功能.这两个功能的使用可变长度参数...,它总是转换floats到doubles和chars到ints.

我的问题是,如果这种转换发生,为什么做独立的标志char和float存在吗?为什么不只使用相同的标志int和double?

相关问题:
为什么scanf()需要"%lf"用于双打,当printf()只用"%f"时可以吗?

c printf variadic-functions

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

为什么在打印多个字符串(%s)时printf()会留下换行符,并且该如何解决?

我制作了一个接受字符串(名字/姓氏)的程序,但是我不是
3岁的Phil Snowken 的典型输出,而是3 岁的
Phil
Snowken

#include <stdio.h>
#define N 10
struct data{
char fname[30];
char lname[30];
int age;
};

main()
{
    int i;
    struct data base[N];
    for(i=0;i<N;i++){
        printf("\n-------------------------");
        printf("\nPeople Data(%d remaining)\n",N-i);
        printf("---------------------------\n\n");
        printf("\nFirst Name ");
        fgets(base[i].fname,30,stdin);
        printf("\nLast Name ");
        fgets(base[i].lname,30,stdin);
        printf("\nAge ");
        scanf(" %d",&(base[i].age));
        fflush(stdin);
    }

    for(i=0;i<N;i++)
        printf("%s %s Year:(%d)",base[i].fname,base[i].lname,base[i].age);
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

c arrays string printf

5
推荐指数
1
解决办法
7180
查看次数

snprintf的隐式声明

我注意到,当我编译这个iniparser时,它会发出以下警告:

 src/iniparser.c:244:5: warning: implicit declaration of function ‘snprintf’ [-Wimplicit-function-declaration]
     snprintf(keym, secsize, "%s:", s);
Run Code Online (Sandbox Code Playgroud)

据推测,解决方案是:

#include <stdio.h>
Run Code Online (Sandbox Code Playgroud)

我尝试过这个,但仅此一点并没有解决问题.然后我查看了Makefile里面的编译标志,发现了这个:

 CFLAGS  += -fPIC -Wall -ansi -pedantic
Run Code Online (Sandbox Code Playgroud)

如果我改为:

 CFLAGS  += -fPIC -Wall -std=c99 -pedantic
Run Code Online (Sandbox Code Playgroud)

它编制了一个警告.这是否意味着C90标准不包括snprintf?有人可以向我解释这种行为吗?

c printf c99 c89

5
推荐指数
1
解决办法
5995
查看次数

使用安全_vsnprintf_s获取所需的缓冲区长度

我正在尝试更新一些"遗留"代码,以符合MSVC的最新安全更新,并且我正面临着迁移_vsnprintf到的一些问题_vsnprintf_s.

特别是,我_vsnprintf使用空缓冲区调用,为计数/长度调用零,获取结果,分配所需大小的缓冲区(return value + 1),然后_vsnprintf使用新分配的缓冲区和已知正确的大小再次调用:

size_t length = _vsntprintf(nullptr, 0, mask, params);
TCHAR *final = new TCHAR [length + 1];
_vsntprintf(final, length + 1, mask, params);
Run Code Online (Sandbox Code Playgroud)

MSDN上记录了此行为:

如果count指定的缓冲区大小不足以包含format和argptr指定的输出,则vsnprintf的返回值是count(如果count足够大)将写入的字符数.如果返回值大于count-1,则输出已被截断.

我正在尝试做同样的事情_vsnprintf_s,但它的文档不包含相同的内容.相反,它说

如果存储数据和终止空值所需的存储超过sizeOfBuffer,则调用无效参数处理程序,如参数验证中所述,除非count为_TRUNCATE,在这种情况下,将写入适合缓冲区的字符串,并且 - 1回来了.

无论如何都要尝试以下内容:

size_t length = _vsntprintf_s(nullptr, 0, 0, mask, params);
Run Code Online (Sandbox Code Playgroud)

这导致"长度"为零.如果您传入_TRUNCATE(-1)作为计数,则以下断言失败:

表达式:buffer!= nullptr && buffer_count> 0

我认为可以覆盖_set_invalid_parameter_handler并以某种方式找出长度应该是多少,但是必须有一种更简单的方法吗?

c++ printf visual-c++-2015

5
推荐指数
1
解决办法
1734
查看次数

将数组送入printfn

我打印的是Tic-Tac-Toe板.我有一个字符串,用于电路板的每个单元格和电路板的格式字符串.我现在正在做:

let cells = [| 'X'; 'O'; 'X'; 'O'; 'X'; 'O'; ' '; ' '; ' ' |]
printfn ".===.===.===.\n\
         | %c | %c | %c |\n\
         .===.===.===.\n\
         | %c | %c | %c |\n\
         .===.===.===.\n\
         | %c | %c | %c |\n\
         .===.===.===.\n" cells.[0] cells.[1] cells.[2] cells.[3] cells.[4] cells.[5] cells.[6] cells.[7] cells.[8]
Run Code Online (Sandbox Code Playgroud)

有没有办法将cells数组提供给printfn而不显式枚举数组中的所有9个项目?我可以用某种方式使用Array.fold或kprintf吗?

printf f#

5
推荐指数
1
解决办法
336
查看次数

Printf()打印字符为32位

我正在运行一个快速测试,以确保我的指针算术运算:

main.c中

#include <stdio.h>
#include <stdlib.h>

#define ADDRESS    0xC0DCA11501LL
#define LENGTH     5


void print_address( char *, char );

/* Main program */
int main( int argc, char *argv[] )
{
    char nums[ LENGTH ];

    /* LSB first */
    for( int i = 0; i < LENGTH; i++ )
    {
        nums[ i ] = ( ADDRESS >> ( 8 * i ) ) & 0xFF;
    }

    print_address( nums, LENGTH );

    system("PAUSE");

    return 0;
}

void print_address( char *data, char len ) …
Run Code Online (Sandbox Code Playgroud)

c printf

5
推荐指数
1
解决办法
216
查看次数