[英]What's difference between perror and fprintf to stderr?
我知道兩者都可以作為錯誤消息,
perror(" ");
fprintf(stderr, " ");
但是它們之間真正的區別是什么? 每個優點/缺點是什么?
根據perror()
標准 :
perror()函數必須將通過符號errno訪問的錯誤號映射到與語言有關的錯誤消息,該消息應按以下方式寫入標准錯誤流:
首先(如果s不是空指針,並且s指向的字符不是空字節),則由s指向的字符串后跟<colon>和<space>。
然后是錯誤消息字符串,后跟<newline>。
錯誤消息字符串的內容應與帶有參數errno的strerror()返回的內容相同。
所以,
perror( " " );
會發出類似
: invalid argument
到stderr
,取決於errno
的當前值。
但
fprintf( stderr, " " );
只會向stderr
發出一個空格字符,而不會打印當前errno
值的字符串表示形式。
fprintf( stderr, " " );
孤立是沒有用的。 perror( " " );
將提供有關errno
當前值的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.