Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中将变量记录到文件中_C_Logging - Fatal编程技术网

在C语言中将变量记录到文件中

在C语言中将变量记录到文件中,c,logging,C,Logging,我有一个相当大的项目是用C编写的(我在这方面没有什么经验),我希望在运行时创建一个日志文件,将变量(所有不同数据类型)的值记录到一个txt文件中 对于像C这样的语言(对于初学者来说),它似乎真的不是很直截了当 我试图编写一个函数,在整个代码中调用它,它只需将值写入一个带有时间戳的txt文件。它不需要很聪明或什么的 我发现这个例子对字符串和整数很有效,但当我尝试将它扩展为double时,它就不起作用了 任何关于如何以易于理解的方式进行此操作的帮助都将不胜感激 谢谢 更新: 代码从链接扩展为双数据类

我有一个相当大的项目是用C编写的(我在这方面没有什么经验),我希望在运行时创建一个日志文件,将变量(所有不同数据类型)的值记录到一个txt文件中

对于像C这样的语言(对于初学者来说),它似乎真的不是很直截了当

我试图编写一个函数,在整个代码中调用它,它只需将值写入一个带有时间戳的txt文件。它不需要很聪明或什么的

我发现这个例子对字符串和整数很有效,但当我尝试将它扩展为double时,它就不起作用了

任何关于如何以易于理解的方式进行此操作的帮助都将不胜感激

谢谢

更新:

代码从链接扩展为双数据类型。。。只是另一个开关箱:

case 'f':
{
    e = va_arg( list, double );

    fprintf(fp,"%f", e);
    continue;
}
然后我在我的主函数中调用它

int main()
{
    double floating = 25.3;    
    LOG_PRINT("%f", floating);
}

文件的输出为0.0000,但..

啊,是的,这是个好地方。
e
的数据类型设置为
int

我创建了一个类型为
double
的新变量,并使用了它

double d;

case 'f':
{
    d = va_arg( list, double );

    fprintf(fp,"%f", d);
    continue;
}

你能举一个例子,说明你在上面展示的例子失败了吗?看起来这个例子可以很好地工作,它可能只是格式说明符的一个小问题。我使用了%f格式说明符。。。请参阅上面的编辑。什么类型是
e
?在您修改所基于的代码中,
e
的声明是
int e-所以得到错误的结果并不奇怪。你将一个
double
读入一个
int
,扔掉任何分数信息,然后对
printf()
撒谎,告诉它你正在传递一个
double
,而实际上你传递的是
int
。考虑:
case'f':{double d=va_arg(list,double);fprintf(“fp,”%f,d);continue;}
。还要注意的是,您应该得到
0.000000
,因为
%f
的默认精度是小数点后6位。