2017-02-23 12 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 
} 

Когда я спрашиваю у пользователя свое полное имя, я хочу сохранить только первую букву их имени. Как ты это делаешь?Как сделать char хранить только 1 букву и удалить остаток в scanf в c?

+0

Поскольку 'scanf()' потребляет возврат каретки в качестве входного. –

+0

Я думаю, что это наиболее часто размещаемый вопрос в этом разделе – bruceg

+0

спасибо xing, который помог alot –

ответ

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();