2

ここで完全な初心者。プログラミングクラスの紹介の2日目なので、優しくしてください。私たちはCでプログラミングしています。

私たちの任務は、ユーザーに次の形式で名前を付けるように促すことでした。ジョン・スミス、そしてそれをそのように印刷して戻します。スミス、J。

頭痛の種に追加するには、空白のスペースがいくつあるかに関係なく、プログラムを実行する必要があります。つまり、ジョン/ nスミス、ジョン/ tスミス、ジョン/0スミス。

これが私がこれまでに持っているものです、

#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()代わりにegを調べてください。を使用する必要がある場合はgetchar()、質問にその旨を記載してください。

于 2012-01-12T13:17:54.717 に答える