C编程:名称编曲!编码newb?

时间:2012-01-12 13:08:52

标签: c char getchar

在这里完成新手。在我的编程课程的第二天,所以要温柔。我们用C btw编程。

我们的任务是提示用户以格式给我们一个名字:John Smith,然后像这样将它打印出来;史密斯,J。

令人头疼的是,无论有多少空格,程序仍然必须执行。即John / n Smith,John / t smith和John / 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函数???此外,没有arraylists和没有字符串方法。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

请注意,除了其他答案中提到的问题外,还有以下表达式:

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

不要按照您的预期行事 - 您需要将此特定示例编写为:

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

或者更具表现力:

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

答案 2 :(得分:0)

在这里关注getchar()似乎适得其反;它读取字符,你想读整个单词(字符串)。查看例如而是scanf()。如果您使用getchar()有某种要求,则应在问题中这样说。