【发布时间】:2013-03-05 12:19:32
【问题描述】:
调用 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 被定义为 als time_t 类型,但看到 printf 使用单个参数我怀疑这是一个问题。
【问题讨论】:
-
与您的问题不严格相关,但请不要用荷兰语编写代码。这是一个坏习惯。
-
您能否为代码显示更多上下文?例如,您如何获得
ptr?您是否将其作为指向函数中局部变量的指针返回? -
你在 64 位平台上吗?
-
"%d"用于int;可能ptr->einde是完全错误的其他东西:使用正确的说明符。 -
UB(未定义行为)的机制很奇怪:)
标签: c