如何使用 strtof endPointer

How to use strtof endPointer?

本文关键字:endPointer strtof 何使用      更新时间:2023-10-16

查看各种谷歌结果提供的示例,我真的不明白 EndPtr 是如何工作的。举个例子:

char szOrbits[] = "686.97 365.24";
char* pEnd;
float f1 = strtof (szOrbits, &pEnd);

该函数采用在 char 数组之后声明的指针的指针,这是否意味着指针的实际类型和内容无关紧要,并且指针保证在数组之后分配,从而使其地址成为终点?

我尝试像这样使用它:

ret.push_back(EquationPiece(strtof(&Source[mark], (char**)&Source[i])));

其中 ret 是一个向量,Source 是一个字符数组,mark 是数字开始的地方,i 是数字后面的下一个字节,但我得到了一些奇怪的结果。我的用法不正确还是我应该在其他地方寻找错误?

尽管参考页面将参数pendptr描述为对char*对象的引用,但这可能是错误的。在 C 中,我们只有指针,strtof 的第二个参数是指向 char 的指针。

您可以利用此参数获取输入 char 数组中不能用于将 char 数组转换为输出浮点数的点。如果指针指向"\0",则表示数组已完全转换。如果它指向不同的东西,您可以开始错误处理或进一步处理 char 数组。

当您不确定它的含义时,您永远不应该投射任何指针。Cast 告诉编译器程序员更了解它。根据EquationPiece的含义,传递 endPtr

ret.push_back(EquationPiece(strtof(&Source[mark], pEnd));