2013-09-09 3 views
0
char middle; 
printf("What is your middle name? ");  
scanf(" %c", &middle);  
printf("Your middle name is %c \n\n", middle); 

Так что я пытаюсь создать простую программу, которая запрашивает имя, затем распечатывает его, но возвращает только символ, я знаю, что% c для символов, но что мне нужно сделать, чтобы получить полное имя? Спасибо заранее, извините за такой глупый вопрос, только новичок :)Как изменить символ в строку?

+0

См. Спецификаторы формата для ['scanf()'] (http://en.cppreference.com/w/c/io/fscanf) и каждого предложения. Они несколько объясняют это для вас. – WhozCraig

ответ

1

Вы получаете только один символ, если хотите полное слово, вы должны использовать в качестве строки формата. Следующий код даст вам второе имя, если вы не наберете более 50 символов (попробуйте добавить более 50 символов, чтобы узнать, что произойдет!).

char middle[50]; 
scanf("%s", middle); 

Затем напечатать результат:

printf("Middle name is %s", middle); 
4

Резервирование места для более чем одного символа:

char middle[32]; 

и сканировать и печатать строки:

if(scanf("%31s", middle) == 1) 
    printf("Your middle name is %s\n, middle); 
+1

+1 для максимальной ширины поля и проверки возвращаемого значения для scanf – user694733

+0

@ user694733 Спасибо. Я стараюсь показать некоторую меру «хорошей практики», она чувствует себя полезной. – unwind

1
char* middle=malloc(EXPECTED_NAME_LENGTH+1); 
printf("What is your middle name? ");  
scanf(" %s", middle);  
printf("Your middle name is %c \n\n", middle);