2012-01-12 3 views
2

Полный новичок здесь. 2-й день в моем вступительном слове к классу программирования, так что будьте осторожны. Мы программируем на C btw.C Программирование: Аранжировщик имен! Кодирование newb?

Наше задание состояло в том, чтобы предложить пользователю дать нам имя в формате: Джон Смит, а затем распечатать его так же, как и прежде; Smith, J.

Чтобы добавить к головной боли, программа по-прежнему должна выполняться независимо от количества пробелов. то есть Джон/п Смит, Джон/т кузнеца, и Джон/0 Smith ..

Вот что я до сих пор,

#include <stdio.h> 

int input() 
{ 
    printf("Enter your name: \n"); 
    int lettest = getchar(); 
    return (lettest); 
} 

void fname() 
{ 
    int lettest; 
    if (lettest != EOF || '\n' || '\t' || ' ') 
    { 
     printf("%c.", lettest); 
     lettest = getchar(); 
    } 
    else; 
} 
void lname() 
{ 
    int lettest; 
    if (lettest != EOF || '\n' || '\t' || ' ') 
    { 
     printf("%c.", lettest); 
     lettest = getchar(); 
    } 
    else; 
} 

int main() { 

    input(); 
    lname(); 
    //fflush(stdin); 
    fname(); 

    return 0; 
} 

Мои проблемы: я не знаю, как напечатать фамилию когда он читает оба из того же буфера.

Может кто-нибудь объяснить мне, как я буду выполнять свою функцию lname ??? Кроме того, нет арраистов и нет строковых методов.

+1

'int lettest; if (lettest ..) '?? это свежая переменная с неопределенным контентом. –

+0

Не могли бы вы отформатировать ее правильно? –

+2

Я вижу, что вы прокомментировали вызов 'fflush (stdin)'. Вы даже можете удалить эту строку. 'fflush' может использоваться только для выходных потоков, никогда не используйте' fflush' на 'stdin'. – ouah

ответ

2

Обратите внимание, что в дополнение к проблемам, упомянутых в других ответах, такие выражения, как:

if (lettest != EOF || '\n' || '\t' || ' ') 

не ведут себя, как вы ожидаете их - вам нужно написать этот конкретный пример, как:

if (lettest != EOF && lettest != '\n' && lettest != '\t' && lettest != ' ') 

или, возможно, более экспрессивно:

if (!(lettest == EOF || lettest == '\n' || lettest == '\t' || lettest == ' ')) 
0

Сосредоточение на getchar() здесь кажется контрпродуктивным; он читает символы, и вы хотите читать целые слова (строки). Посмотрите, например. scanf() вместо. Если есть какое-то требование, которое вы используете getchar(), вы должны сказать это в вопросе.

2

Почему вы не используете scanf?

include <stdio.h> 
int main() { 
char f[20],l[20]; //assume a name is less then 20 letters. 
printf("What is your name?\n"); 
scanf("%s %s",f,l); 
printf("%s, %c.\n",l,f[0]); 
return 0; 
} 
Смежные вопросы