2012-05-18 102 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獲取更多診斷信息。