2012-01-12 8 views
2

完全な初心者はこちら。プログラミングのクラスへの私のイントロでは2日目ですので、優しくしてください。我々はC btwでプログラミングしています。Cプログラミング:名前のアレンジャー! newbをコーディングしていますか?

私たちの割り当ては、ユーザーにJohn Smithという形式の名前を付けるように促すことでした。 Smith、J.

頭痛に追加するには、何個の空白があるかにかかわらず、プログラムはまだ実行する必要があります。すなわちジョン/ N・スミス、スミストンジョン/、ジョン/ 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関数をどうやって説明することができますか?また、arraylistsと文字列メソッドはありません。

+1

'int lettest; if(lettest ..) '??それは未定義の内容の新しい変数です。 –

+0

正しくフォーマットしてください。 –

+2

'fflush(stdin)'コールにコメントしたことがあります。その行を消去することさえできます。 'fflush'は出力ストリームでのみ使用でき、' stdin'では 'fflush'を使用しません。 – 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; 
} 
関連する問題