Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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:strof返回0.000,what´;怎么了?_C - Fatal编程技术网

C:strof返回0.000,what´;怎么了?

C:strof返回0.000,what´;怎么了?,c,C,我的C代码的这一部分有一些问题。除了返回0.000而不是浮点数的函数“strtof”之外,其他函数都应该工作正常 代码应该做什么: 读一行,例如“a 12” 如果第一个字符是“a”,那么,使用strof,它应该设置指向下一个空格的指针,并将两个空格之间的值保存为x。。。(可能错了) (包括所有库,并定义了最大线。) 谢谢你的回答:) 据 如果您的第一个字符是“a”,则应调用: x = strtof(line+2,&ptr); 如果使用的行没有偏移,strof将解析“a 12”并在“a”

我的C代码的这一部分有一些问题。除了返回0.000而不是浮点数的函数“strtof”之外,其他函数都应该工作正常

代码应该做什么: 读一行,例如“a 12” 如果第一个字符是“a”,那么,使用strof,它应该设置指向下一个空格的指针,并将两个空格之间的值保存为x。。。(可能错了)

(包括所有库,并定义了最大线。)

谢谢你的回答:)

据 如果您的第一个字符是“a”,则应调用:

x = strtof(line+2,&ptr);

如果使用的
没有偏移,strof将解析“a 12”并在“a”处停止,您可以检查
ptr
值以查看解析停止的位置。

您已经指出:

代码应该做什么:读取一行,例如“a 12”,如果第一个字符是“a”,那么,使用strof,它应该将指针设置为下一个空格,并将两个空格之间的值保存为x。。。(可能错了)

根据(strtod和strtof等效):

如果字符串为空、仅包含空格,或者不包含具有浮点数所需语法的初始子字符串,则不执行转换。在这种情况下,strtod返回一个零的值,*tailptr中返回的值是string的值


您没有读取“a”之后的浮点值,我认为您需要这样做:

ptr = strtok(NULL," ");
x = strtof(ptr, NULL);

下一次调用
strtok
将读取“12”,而
strtof
将把它转换成一个浮点数到x变量中。

第一个strtok循环用于什么?Ir似乎没有效果。哦,是的,对不起,我忘了删除它。。。不,它实际上不是:)(这是一个旧版本的代码…)如果第一个字符是
a
,那么您正在调用字符串“a…”上的strtof,而这看起来不像一个浮点,因此strtof返回0.000。如果要获取a后面的字符串,请调用strtof,其中第一个参数指向下一个标记,而不是行的开头。请尝试在
x=strtof(行,&ptr)前面添加
If((ptr=strtok(NULL)(“”))
ptr = strtok(NULL," ");
x = strtof(ptr, NULL);