簡體   English   中英

getc Vs getchar Vs Scanf用於從stdin讀取字符

[英]getc Vs getchar Vs Scanf for reading a character from stdin

以下三個功能:

getc getchar&scanf

從stdin讀取角色的最佳選擇是什么?為什么?

這些功能中是否存在任何已知的缺點或限制,這使得一個功能優於另一個功能?

如果您只想從stdin讀取單個字符,那么getchar()是合適的選擇。 如果您有更復雜的要求,那么getchar()將是不夠的。

  • getc()允許您從不同的流中讀取(例如,使用fopen()打開的流);
  • scanf()允許您一次只讀取一個字符。

使用getchar()時最常見的錯誤是嘗試使用char變量來存儲結果。 您需要使用int變量,因為getchar()返回的值范圍是“ unsigned char范圍內的值加上單個負值EOF ”。 char變量沒有足夠的范圍,這可能意味着您可以將完全有效的字符返回與EOF混淆。 這同樣適用於getc()

來自Beej的C編程指南

所有這些功能都以這種或那種方式從控制台或文件中讀取單個字符。 差異相當小,以下是描述:

getc()從指定的FILE返回一個字符。 從使用的角度來看,它相當於相同的fgetc()調用,而fgetc()更常見。 只有兩個功能的實現不同。

fgetc()返回指定FILE中的字符。 從使用的角度來看,它相當於相同的getc()調用,除了fgetc()更常見。 只有兩個功能的實現不同。

是的,我作弊並使用cut-n-paste來完成最后一段。

getchar()從stdin返回一個字符。 實際上,它與調用getc(stdin)相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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