标签: printf

printf字符串,可变长度项

#define SIZE 9
int number=5;
char letters[SIZE]; /* this wont be null-terminated */
... 

char fmt_string[20];
sprintf(fmt_string, "%%d %%%ds", SIZE);
/* fmt_string = "%d %9d"... or it should be */

printf(fmt_string, number, letters);
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

c format printf

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

打印pid_t的printf说明符是什么

我目前使用一个显式的长和使用%ld打印pid_t,有一个符如%z用于size_tpid_t

如果没有什么最好的印刷方式pid_t

c io printf pid

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

使用printf打印浮动时,额外的前导零?

我希望能够编写一个如下所示的时间字符串:1:04:02.1 hoursusing printf.
当我尝试写这样的东西时:

printf("%d:%02d:%02.1f hours\n", 1, 4, 2.123456);
Run Code Online (Sandbox Code Playgroud)

我明白了:

1:04:2.1 hours
Run Code Online (Sandbox Code Playgroud)

是否可以将前导零添加到浮点格式?

c c++ floating-point formatting printf

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

shell脚本中的SPRINTF?

我每天都有一个自动生成的文件,由shell脚本调用.但是,我面临的问题是自动生成的文件有以下形式:

FILE_MM_DD.dat
Run Code Online (Sandbox Code Playgroud)

...其中MM和DD是2位数月份和日期字符串.

我做了一些研究,并自己打了它,但我不知道如何只使用shell脚本创建这些自定义字符串.

要清楚,我知道Bash中的DATE函数,但我正在寻找的是C中的SPRINTF函数的等价物.

bash shell printf

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

如果只跟踪0,则使用printf格式化不带小数位的浮点数

是否可以在C中格式化浮点数,如果使用printf与0不同,则最多只能显示2个小数位?

例如:

12 => 12

12.1 => 12.1

12.12 => 12.12

我试过用:

float f = 12;
printf("%.2f", f)
Run Code Online (Sandbox Code Playgroud)

但我明白了

12 => 12.00

12.1 => 12.10

12.12 => 12.12

c printf

38
推荐指数
3
解决办法
6万
查看次数

printf无法在控制台上打印

我开始用C语言了.我使用eclipse(juno)作为我的IDE并安装了CDT插件.我还解压缩了mingw64(GCC编译器).我写了一个非常简单的程序,看它是否有效.这是我的代码:

#include <stdio.h>

int main()
{
    int age;
    printf("Hello, please enter your age:\n");
    scanf("%d", &age);
    printf("Your age is %d", age);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是输出缓冲区填充了第一个字符串的值,printf但不会将其输出到控制台.我必须输入一个数字,然后只有缓冲区将所有数据倒入控制台,所以我看到控制台是这样的:

1
Hello, please enter your age:
Your age is 1
Run Code Online (Sandbox Code Playgroud)

而不是预期的:

Hello, please enter your age:
1
Your age is 1
Run Code Online (Sandbox Code Playgroud)

现在,我发现我可以fflush(stdout)在第一个之后使用,printf但我不认为这个解决方案是优雅的,甚至是必要的.关于如何克服这个问题的任何想法?

编辑 - 因为我在大学里学习这个,我不能使用课程中没有学到的东西,所以我只能使用printfscanf

新编辑 - 我想我已经找到了解释.正如我所说,我正在输出到Eclipse内的控制台视图.奇怪的是,如果我从Windows的命令行编译并运行程序,我得到想要的结果.因此,我认为eclipse实际上是将输出写入文件并在控制台窗口中显示.如何强制eclipse在我的运行配置中打开一个真正的命令行窗口?

c eclipse printf gcc scanf

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

Scanf/Printf双变量C.

假设我在C中有以下代码:

double var;
scanf("%lf", &var);
printf("%lf", var);
printf("%f", var);
Run Code Online (Sandbox Code Playgroud)

它从stdin变量'var'读取,然后在stdout'var'中打印两次.我理解你是如何从stdin读取双变量的,但我的问题是:

  1. 为什么你可以用%lf打印双倍?
  2. 为什么你可以用%f打印双倍?
  3. 使用哪一种更好更正确?

c double printf stdin stdout

36
推荐指数
3
解决办法
23万
查看次数

sprintf()具有自动内存分配?

我正在寻找一个sprintf() - 类似于自动分配所需内存的函数的实现.所以我想说

char* my_str = dynamic_sprintf( "Hello %s, this is a %.*s nice %05d string", a, b, c, d );
Run Code Online (Sandbox Code Playgroud)

和my_str检索保存此sprintf()结果的已分配内存的地址.

在另一个论坛中,我读到这可以像这样解决:

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

int main()
{
    char*   ret;
    char*   a = "Hello";
    char*   b = "World";
    int     c = 123;

    int     numbytes;

    numbytes = sprintf( (char*)NULL, "%s %d %s!", a, c, b );
    printf( "numbytes = %d", numbytes );

    ret = (char*)malloc( ( numbytes + 1 ) * sizeof( char ) );
    sprintf( ret, …
Run Code Online (Sandbox Code Playgroud)

c malloc printf

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

如何通过printf打印二进制数

可能重复:
是否有printf转换器以二进制格式打印?

这是我的计划

#include<stdio.h>
int main ()
{
    int i,a=2;
    i=~a;
    printf("a=%d\ni=%d\n",a,i);

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

输出是

a=2
i=-3
Run Code Online (Sandbox Code Playgroud)

我希望这个以二进制打印.%x,%o和%d是十六进制,八进制和十进制数,但是什么用于在printf中打印二进制文件?

c binary printf

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

使用C在终端的printf输出中获得一个奇怪的百分号

printf在程序结束时发表了这样的声明:

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

total_candies是一个int,虽然我希望一切正常,但实际数字,我最终得到一个奇怪的百分号. 在此输入图像描述

谁能告诉我为什么会这样?

c printf zsh

35
推荐指数
2
解决办法
5646
查看次数

标签 统计

printf ×10

c ×9

bash ×1

binary ×1

c++ ×1

double ×1

eclipse ×1

floating-point ×1

format ×1

formatting ×1

gcc ×1

io ×1

malloc ×1

pid ×1

scanf ×1

shell ×1

stdin ×1

stdout ×1

zsh ×1