Программирование на C: Имя аранжировщик! Кодирование новичка? - PullRequest
2 голосов
/ 12 января 2012

Полный новичок здесь. 2-й день в моем вступлении к уроку программирования, так что будьте нежны. Мы программируем на C, кстати.

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

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

Вот что у меня есть,

#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 ??? Кроме того, нет массивов и строковых методов.

Ответы [ 3 ]

2 голосов
/ 12 января 2012

Почему вы не используете 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;
}
2 голосов
/ 12 января 2012

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

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

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

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

или, возможно, более выразительно:

if (!(lettest == EOF || lettest == '\n' || lettest == '\t' || lettest ==  ' '))
0 голосов
/ 12 января 2012

Сосредоточение внимания на getchar() здесь кажется контрпродуктивным; он читает символы, и вы хотите прочитать целые слова (строки). Посмотрите, например, <a href="http://linux.die.net/man/3/scanf" rel="nofollow">scanf()</a> вместо. Если есть какое-то требование, которое вы используете getchar(), вы должны сказать об этом в вопросе.

...