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);
我尝试将浮点数保存到文本文件中,但当我尝试运行此代码时,它触发了编译错误,因为函数fprintf
期望第二个参数是字符数组,因此如何将浮点数转换为字符串以便传递它,我有一个C#的背景,在那里像.toString()
这样的东西是可能的,所以在C中有没有像这样的东西来直接将浮点型转换为字符串?
4条答案
按热度按时间lp0sw83n1#
如果你可以使用C99标准,那么最好的方法就是使用
snprintf
函数,在第一次调用时,你可以传递一个零长度(null)的缓冲区给它,它会返回将浮点值转换成字符串所需的长度,然后根据它返回的内容分配所需的内存,这样就可以安全地进行转换。这解决了在here中讨论的sprintf的问题。
示例:
eoigrqb62#
第二个参数是格式字符串,后面跟有格式参数:
%f
告诉fprintf
将此参数(amount
)作为浮点值的字符串表示形式写入。可能的格式说明符的列表可以(例如)在here中找到。
s2j5cfk03#
通过使用***
sprintf()
***,我们可以在c语言中将浮点数转换为字符串,以便更好地理解,请参见以下代码希望这对你有帮助。
fslejnso4#
要为每个
float
打印不同的文本,请使用格式字符串"%.*e"
。FLT_DECIMAL_DIG - 1
是唯一地打印每个float
值而不过度精确所需的位数。使用
"%f"
将打印几乎一半的小float
(如0.000000001f
)和-1.2345e-10
(如0.000000
或-0.000000
)。使用
"%f"
将打印类似FLT_MAX
的大float
,并带有类似“340282346638528859811704183484516925440.000000”的冗长文本。