2012-05-18 107 views
-2

如何识别导致返回值为-1的错误类型?C - 返回值错误

例:

a = sscanf(ptr, "%s",output); 
printf("%d",a); 

输出:

-1 

回答

3

从文档:

...and errno shall be set to indicate the error。使用perror()来查看错误是什么。通常,errno仅适用于存在读取错误的情况,该错误不适用于sscanf。当没有匹配失败或转换时,简单地返回-1。由于你的fmt字符串只是'%s',我能想到得到-1返回值的唯一原因是如果ptr指向的字符串只包含空格。

+0

错误代码将永远是'EINVAL',它并不真正告诉你很多 –

1

您将通过检查ptr的内容并检查output被正确声明来识别错误。典型的错误是ptroutputNULL

您将不会从sscanf获取更多诊断信息。