2017-02-23 3 views
-1
#include <stdio.h> 

main(){ //main loop 
    int rate, hours, xhours, tax, uwc, deduct, GP, NP; //rate=pay per hour, hours=hours worked, xhours=overtime 
    char F_N, G_N; //Store Family name and given name 

    printf("Input family name :"); //Ask Family name 
    scanf("%1c", &F_N);//Store only initial of family name 
    printf("\nInput given name:"); //Ask given name 
    scanf(" %1c", &G_N);//Store only initial of given name 
    printf("\nInput hourly rate of pay:"); //Ask for rate of pay 
    scanf("%d", &rate); //Store rate of pay 

    return 0; //end the code 
} 

ユーザーにフルネームを尋ねると、名前の最初の文字のみを保存します。あなたはどうやってそれをしますか?どのようにCの中のscanfで1文字だけを文字保存して残りを削除するのですか?

+0

'scanf()'はキャリッジリターンを入力として消費しているためです。 –

+0

私はこれが最も一般的にこのセクションで投稿された質問だと思う – bruceg

+0

助けてくれたありがとうxing –

答えて

0

getcharを使用して最初の文字を取得して保存する場合は、getcharを使用して残りの行を破棄してください。たとえば、次のように

int c = getchar(), F_N = c; 
while (c != '\n' && c != EOF) 
    c = getchar(); 

これは主に、単一scanf*割り当て抑制文字で行うことができますが、scanfはあなたが余分なgetchar()を必要とするので、正しく改行を処理しません。

char F_N; 
if (scanf("%c%*[^\n]", &F_N) != 1) { 
    /* XXX: handle scanf error */ 
} 
getchar(); 
関連する問題