This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C1294NCPDT:sscanf 返回值不正常

Guru**** 2595770 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/968516/compiler-tm4c1294ncpdt-sscanf-return-value-not-ok

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

根据 C++规范、sscanf 返回的值应与成功填充的项目数匹配。 (链接)

我尝试了以下操作(编译器 TI v5.2.5):

bool ToFloat (char* string、float* data)
{
int temp = sscanf (string、"%f"、data);
返回(1 == temp);
}

int main (void)
{
char testdata[]="EPRP";
解析浮点;

bool res = ToFloat (&testdata[0],已解析);
... 

在这种情况下、sscanf 返回1、数据为0.0。 我尝试了其他字符串、如"XXXX"或"PERP"、这些字符串会按预期返回0。

我使用不同的编译器对其进行了测试:

Link1Link2Link3link4

所有这些函数都按预期返回0、因此我猜 TI v5.2.5编译器(也是 TI v18.1.LTS)在以"E"开头的字符串中存在问题(可能是由于工程符号?)。

是否有解决此问题的方法,或者是否有可正常工作的 stdio 库版本?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您将此问题通知我们、并提供一个简洁的测试案例。  我可以重现相同的行为。  我提交了 EXT_EP-10178条目  以进行调查。  欢迎您通过该链接访问该链接。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    H&S5的记录是:

    "如果没有读取数字、或者在看到指数部分之前至少没有读取数字、则该值为零。"

    这使所描述的行为看起来对我来说是正确的。