簡體   English   中英

perror和fprintf to stderr有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM