【发布时间】:2013-06-14 19:33:49
【问题描述】:
我正在用 C 语言编写一个业务应用程序,其中我通过将值写入临时文件来跟踪计时器。计数器从 96 开始,一直倒数到 0。逻辑工作正常,除了当它从 10 切换到 9 时,9 只会覆盖 1,所以值不是 10 -> 9,而是 10 - > 90,导致倒计时从这一点开始。有没有办法让我的应用程序成功写入值?
我正在使用以下两个函数来控制输出到文件"
fprintf(fileFd, "%d" , counter);
rewind(fileFd);
我将值打印到我的文件中,然后将访问点移回文件头部以获取下一个条目。关于如何做到这一点的任何建议?谢谢大家。
编辑:谢谢大家的建议。我尝试了下面建议的方法,通过调用 %02d 写入两个位置值,并且由于某种原因完全破坏了应用程序。循环根本不会发生......然后当我重新编译时,它仍然无法工作,直到我删除我的临时文件并创建一个新文件。现在,当写入文件时,它在底部(这是一个 UNIX 系统)告诉我文件名,[不完整的最后一行],1 行 2 个字符。这会对指定要写入的位置数量产生任何影响吗?
【问题讨论】:
-
如果你正在实现一个计时器,你为什么要写入一个文件?
-
您可以从 196 数到 100。这始终采用相同的位数,您只需在读取后减去 100,然后在写入前添加 100。
-
对于 Shamim,此计时器用于在第一次检测到错误后 24 小时内跟踪服务器中断,但如果二进制文件重新启动,则计时器将在 24 小时后重新开始。如果二进制文件出现故障,文件中的值将保持该值有效。对于 Lee,我曾想过只使用三位数的值,但感觉很草率……我只是想知道是否有更好的解决方案。
标签: c file-io fopen countdown printf