2

在这里完成新手。在我的编程课介绍的第二天,所以要温柔。顺便说一句,我们正在用 C 编程。

我们的任务是提示用户给我们一个格式的名字: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 功能吗???此外,没有数组列表和字符串方法。

4

3 回答 3

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;
}
于 2012-01-12T13:19:36.540 回答
2

请注意,除了其他答案中提到的问题外,诸如:

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

不要像您期望的那样行事-您需要将此特定示例编写为:

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

或者也许更富有表现力:

if (!(lettest == EOF || lettest == '\n' || lettest == '\t' || lettest ==  ' '))
于 2012-01-12T13:20:40.983 回答
0

专注于getchar()这里似乎适得其反;它读取字符并且您想读取整个单词(字符串)。改为查看例如scanf()。如果您使用某种要求getchar(),您应该在问题中这样说。

于 2012-01-12T13:17:54.717 回答