FILE * fPointer;
float amount = 3.1415;
fPointer =fopen("vending.txt","w");
fprintf(fPointer ,amount);
printf("The file has been created for the first time and we added the value %f" , amount);
fclose(fPointer);
Run Code Online (Sandbox Code Playgroud)
我正在尝试将浮点数保存到文本文件中,但是当我尝试运行此代码时,它会触发编译错误,因为函数 fprintf 期望第二个参数是一个字符数组,因此如何将浮点数转换为字符串我可以通过它,我来自 ac# 背景,在那里可以使用 .toString() 之类的东西,所以在 c 中有任何类似的东西可以直接将浮点数转换为字符串吗?
第二个参数是格式字符串,后面是格式参数:
fprintf(fPointer, "%f", amount);
Run Code Online (Sandbox Code Playgroud)
%f告诉fprintf将此参数 ( amount)写为浮点值的字符串表示形式。
可以(例如)在此处找到可能的格式说明符列表。
如果可以使用C99标准,那么最好的方法就是使用snprintf函数。在第一次调用时,您可以向它传递一个零长度(空)缓冲区,然后它将返回将浮点值转换为字符串所需的长度。然后根据它返回的内容分配所需的内存,然后安全地转换。
这解决了此处讨论的 sprintf 问题。
例子:
int len = snprintf(null, 0, "%f", amount);
char *result = (char *)malloc(len + 1);
snprintf(result, len + 1, "%f", amount);
// do stuff with result
free(result);
Run Code Online (Sandbox Code Playgroud)