C编程,fprintf()无法正常工作

时间:2014-11-05 09:36:55

标签: c

我在这里做的可能是一个愚蠢的错误。

    FILE *fp;
    fp = fopen("test.txt", "a+");
    fprintf(fp, time_stamp(),"FLAG 1, Timestamp : %s\n");
    fclose(fp);

我从函数中获取时间戳 但该文件只写时间戳,而不是标志 如果我删除时间戳,FLAG 1打印。但没有聚在一起。即

Flag 1, Timestamp : 20141005141116

我在test.txt中获得的输出,如

20141005145640201410051456402014100514564020141005145640201410051456412014100514564120141

不会去新行和打印如下:

Flag 1, Timestamp : 20141005141116
Flag 1, Timestamp : 20141005141117
Flag 1, Timestamp : 20141005141118

..... 像那样

请解决此问题

2 个答案:

答案 0 :(得分:8)

您的fprintf()参数的顺序错误。看看manual page的原型:

int fprintf(FILE *stream, const char *format, ...);

显然,格式化字符串之前正在格式化的内容(变量部分...)。

假设time_stamp()返回一个静态字符串,您的代码应为:

fprintf(fp, "FLAG 1, Timestamp : %s\n", time_stamp());

答案 1 :(得分:3)

fprintf()的参数应该是这样的:

fprintf(fp, "FLAG 1, Timestamp : %s\n", time_stamp());