getchar在C语言编程什么位置,在C 中,无法确定如何使用 getchar();_getchar_开发99编程知识库...

首先,getchar() 返回一個 int,而不是 char 。 這樣它就可以返回任何有效字元( 值為 0的值。CHAR_BIT為 8的系統 255 ) 和一個單獨的值( 通常 -1 ) 作為 eof 。

其次,當用戶鍵入答案時,信息包含字元( 你也希望) 和換行符。 可能有前導空格;可能有尾部垃圾。

因此,你的F 可能得到第一個字元;C 讀取換行,而不是等待更多的輸入。

如果要依次讀取行和進程,請使用 fgets() 讀取行和 sscanf() 以解析結果。 或者使用函數封裝類似的處理,如下面的get_answer() 函數。#include

extern int get_answer(void);/* Declare in a header? */

int get_answer(void)

{

int c;

int answer = 0;

while ((c = getchar())!= EOF && c!= 'n')

{

if (answer == 0 && (c == 'y' || c == 'n'))//Upper-case?

answer = c;

/*?check for garbage here and complain? */

}

return answer;

}

int main(void)

{

int F,C;

printf("Do you have a Fever? y/nn");

F = get_answer();

printf("Do you have a runny nose or cough? y/nn");

C = get_answer();

printf("Here are the results you input:n");

printf("Do you have a fever? %cn", F);

printf("Do you have a runny nose or cough? %cn", C);

return 0;

}

注意,換行在輸出結束時,一般情況下。 可以從提示消息中省略它們,以便輸入與交互會話中的提示符出現在同一行中。 在輸入任何數據時,調用代碼並不真正處理 eof 正確的—,它的中用戶觸發 eof 條件( 通過鍵入控制項d 例如) 。 get_answer() 中的代碼是可以的;main() 中的代碼應該測試零返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值