2015-01-08 11 views
2

Я в отчаянной помощи, что-то, что может быть простым, я уже усложняю вещи.Введите свое имя, выведите перед первым пространством

мне нужна программа, которая вводит свое имя

например Вход: Введите ваше имя: Джон Спенсер

Выход: Ваше имя: Джон

мне нужно сделать это в самом простом формате без использования функций и т.д.

Как бы вы ошибки проверить эту программу , поэтому, когда вы печатаете что-то без пробела в нем, он не сломается (без использования обработчиков исключений)

char name[100]; 
int i = 0; 
printf("Enter your name: "); 
gets_s(name); 

printf("First name is: "); 

while (name[i] != 32) 
{ 
    putchar(name[i]); 
    i++; 
} 
+0

Не могли бы вы помогите мне с приведенным выше кодом, чтобы лучше сформировать то, что мне нужно сделать? – Kenyanke

+1

какая проблема? – bolov

+0

Просто выполните две модификации: 1. Измените 'gets_s (name);' to 'fgets (name, 100, stdin);'. 2. Измените 'name [i]! = 32' на' name [i]! = '' ' – haccks

ответ

3

в ответ на ваш комментарий, вы можете убедиться, что вы на прочитайте до конца строки, изменив условие на while(name[i] != ' ' && name[i] != '\0') (обратите внимание, что я изменил их на символьные литералы для лучшей читаемости и переносимости (например, если вы хотите скомпилировать другую кодировку), если вы должны использовать числа вместо этого отметьте для 0). В то время как C++ имеет перегрузку gets_s, которая не принимает размер буфера, вы также должны добавить размер буфера (99 в этом случае) в gets_s в качестве второго аргумента, если вы хотите, чтобы ваш код был скомпилирован в C.

+0

Огромное спасибо :) Мой мозг теперь перешел от всего стресса от чего-то такого простого. – Kenyanke

+0

Я использую gets_s для единственной цели моего компилятора. – Kenyanke

+0

@ Kenyanke Действительно, но ваш вопрос помечен как C, а не C++, поэтому я решил, что хочу указать на это. – IllusiveBrian

Смежные вопросы