【发布时间】:2021-07-16 03:41:49
【问题描述】:
所以我有一些看起来有点像这样的代码,其中文件“float”是一个具有浮点值的文件
FILE* f;
float a;
f = fopen("float", "rb");
char buffer[sizeof(float)];
if (fgets(buffer, sizeof buffer, f) == NULL) break;
那么我如何将信息从缓冲区转换为a?
【问题讨论】:
-
请注意,
sizeof(float)通常为 4,因此最多只能接受 2 位数字。 (其余 2 个元素用于换行符和终止空字符) -
当您说“具有浮点值的文件”时,您的意思是该文件包含代表浮点数的 ASCII 字符串,还是文件中的字节本身构成 IEEE 754 浮点数?
-
如果文件实际上包含二进制
float,请使用fread()而不是fgets(),并且知道您实际上可以完全摆脱buffer,直接读入@987654327 @ 而不是,例如:float a; if (fgets(&a, sizeof a, 1, f) != 1) { ... } ... fclose(f); -
顺便说一句,这段代码看起来更像 C 而不是 C++,你确定你的问题标记正确吗?
-
是的,代码在 c++ 中,“float”文件带有值的文本表示