标签: printf

在printf中设置变量文本列宽

为了确定我们使用的C语言列的大小%<number>d.例如,我可以输入%3d,它会给我一个width = 3的列.我的问题是我之后的数字%是我收到的变量,所以我需要类似的东西%xd(x我在程序之前的某个时间收到的整数变量).但它不起作用.

有没有其他方法可以做到这一点?

c size printf

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

Printf long long int in C with GCC?

如何使用GCC打印ff long long intunsigned long long intC99?

我搜索了其他建议使用的帖子,%lld但它给出了这些警告:

警告#1:格式为[-Wformat] |的未知转换类型字符'l'
警告#2:格式参数太多[-Wformat-extra-args] |

对于以下尝试:

#include <stdio.h>

int main()
{
   long long int x = 0;
   unsigned long long int y = 0;
   printf("%lld\n", x);
   printf("%llu\n", y);
}
Run Code Online (Sandbox Code Playgroud)

c printf gcc c99

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

使用va_list调用printf

void TestPrint(char* format, ...)
{
    va_list argList;

    va_start(argList, format);
    printf(format, argList);
    va_end(argList);
}


int main()
{
    TestPrint("Test print %s %d\n", "string", 55);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我需要得到:

Test print string 55
Run Code Online (Sandbox Code Playgroud)

实际上,我得到了垃圾输出.这段代码有什么问题?

c printf variadic-functions

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

混合cout和printf以获得更快的输出

在进行了一些测试后,我发现它printf比它快得多cout.我知道它依赖于实现,但在我的Linux机器上printf速度提高了8倍.所以我的想法是混合两种打印方法:我想cout用于简单的打印,我打算printf用于生成大量输出(通常在循环中).只要在切换到其他方法之前不忘记刷新,我认为这样做是安全的:

cout << "Hello" << endl;
cout.flush();

for (int i=0; i<1000000; ++i) {
    printf("World!\n");
}
fflush(stdout);

cout << "last line" << endl;
cout << flush;
Run Code Online (Sandbox Code Playgroud)

这样好吗?

更新:感谢所有宝贵的反馈.答案摘要:如果你想避免棘手的解决方案,只需简单地不使用endl,cout因为它会隐式刷新缓冲区.请"\n"改用.如果你产生大量输出会很有趣.

c++ performance printf cout

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

我可以用printf()显示枚举的值吗?

是否有一个单行,让我输出枚举的当前值?

c enums printf

48
推荐指数
3
解决办法
10万
查看次数

为什么使用asprintf()而不是sprintf()?

我很难理解你为什么需要asprintf.它在手册中说

的功能asprintf()vasprintf()是的类似物sprintf(3)vsprintf(3),除了它们分配一个字符串足够大以容纳包括终止空字节的输出,并且经由第一个参数的指针返回到它.应该传递此指针 free(3)以在不再需要时释放已分配的存储.

所以这是我试图理解的例子:

asprintf(&buffer, "/bin/echo %s is cool", getenv("USER"));
Run Code Online (Sandbox Code Playgroud)

如果缓冲区分配足够大的字符串而不是说char*=(字符串),那有什么区别

c printf gnu asprintf

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

找不到选项-printf,现在怎么办?

我没有找到Mac的查找没有-printf选项的原因.Apple通常决定采取与其他命令不正交的选项吗?

如何在没有coreutils的Mac中获得与以下命令相同的结果

find . -printf "%i \n"         // command in Ubuntu
Run Code Online (Sandbox Code Playgroud)

macos printf find

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

什么原始数据类型是time_t?

我不知道数据类型time_t.它是浮动双重还是其他什么?因为如果我想显示它,我需要与之对应的标签printf.我可以从那里处理其余部分进行显示,time_t但我需要知道与之对应的数据类型.

c printf types time-t

46
推荐指数
3
解决办法
10万
查看次数

C复数和printf

如何打印(带printf)复数?例如,如果我有这个代码:

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double complex dc1 = 3 + 2*I;
    double complex dc2 = 4 + 5*I;
    double complex result;

    result = dc1 + dc2;
    printf(" ??? \n", result);

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

..我应该使用什么转换说明符(或其他东西)"???"

c printf complex-numbers

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

如何在C中显示十六进制数?

我有一个数字列表如下:

0,16,32,48 ......

我需要以十六进制输出这些数字:

0000,0010,0020,0030,0040 ...

我尝试过如下解决方案:

printf("%.4x",a); // where a is an integer
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是:

0000,0001 0002,0003,0004 ...

我想我就在附近.任何人都可以帮忙,因为我printf在C中不太擅长.

谢谢.

c format printf hex integer

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

标签 统计

printf ×10

c ×8

asprintf ×1

c++ ×1

c99 ×1

complex-numbers ×1

cout ×1

enums ×1

find ×1

format ×1

gcc ×1

gnu ×1

hex ×1

integer ×1

macos ×1

performance ×1

size ×1

time-t ×1

types ×1

variadic-functions ×1