programmaType, ptr->titel, ptr-6ren">
gpt4 book ai didi

C 函数 printf() 的长度有限制吗?

转载 作者:行者123 更新时间:2023-12-04 11:51:32 25 4
gpt4 key购买 nike

在调用 sprintf 函数格式化一个字符串时,打印了一些意想不到的东西

printf("%d;%s;%s;%d;%d;\n", ptr->programmaType, ptr->titel, ptr->zender, ptr->start, ptr->einde);

打印“0;星际之门;科幻;0;0;”而

printf("%d;", ptr->einde);

打印“42”,这是 ptr->einde 的值。我也试过

printf("%d;%s;%s;%d;%d;", 0, "Stargate", "scifi", 0, 42);

打印正确,所以我猜问题与变量有关。我最后尝试的是

int bug = ptr->einde;
printf("%d;%s;%s;%d;%d;\n", ptr->programmaType, ptr->titel, ptr->zender, ptr->start, bug);

也无法正确打印...我不知道到底发生了什么。

注意:ptr->start 和 ptr->einde 被定义为 time_t 类型,但看到 printf 使用单个参数工作,我怀疑这是一个问题。

最佳答案

你说ptr->startptr->eindetime_t类型。这种类型不是完全可移植的,可以是任何 "integer or real-floating type" ,因此当您尝试将它们打印为 int 类型时,它们可能没有在您的系统上得到正确处理。

尝试将其转换为已知的东西然后打印:

printf("%d;%s;%s;%ld;%ld;\n", ptr->programmaType, ptr->titel, 
ptr->zender, (long)ptr->start, (long)ptr->einde);

关于C 函数 printf() 的长度有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15223668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com