2016-09-30 9 views
3

私はプログラミングに非常に新しいですし、gets()でCの文字列の最初の単語を表示する方法があるのだろうか?Cでgets()を使って文字列の最初の単語だけを出力する方法はありますか?

void printFirstWord(char string[]) 
{ 
    int i; 

for(i = 0; i < (string[i] != '\0'); i++) 
    { 
    if(isalpha(string[i])) 
     printf("%c", string[i]); 
    } 


} 

int main() 
{ 

char string[MAX]; 
printf("Type in a scentence"); 
gets(string); 
printFirstWord(string); 


return 0; 
} 

これは私が書いて、今すぐメインで呼び出された機能です。私は関数にisalphaを持っているからですか? 、また

if (string[i] == ' ') 
break; 

例えば、あなたのループパラメータを修正する:あなたの実装で

+0

コードは何をするのでしょうか?あなたは何をすることを期待していましたか? – skrrgwasme

+6

'gets()'は*任意の単語を出力しません。また 'gets()'は時代遅れであり、標準Cではなくなりました。 – Dmitri

+0

'printFirstWord'では、最初の単語の終わりに到達すると' for'ループから抜け出します。 – jxh

答えて

1

、あなたはループに次の行を追加することができますこのように:

for (i = 0; i < strlen(string); i++) 

あなたの方法で全体の実装は以下のようになります。 コメントに応じて別のデザインを選択することを検討してください。取得を使用しないでください。

void printFirstWord(char string[]) 
{ 
    int i; 

    for (i = 0; i < strlen(string); i++) 
    { 
     if (isalpha(string[i])) 
      printf("%c", string[i]); 

     if (string[i] == ' ') 
      break; 
    } 


} 

int main() 
{ 
#define MAX 100 
    char string[MAX]; 
    printf("Type in a scentence\n"); 
    gets_s(string, MAX); 
    printFirstWord(string); 

    getchar(); 
    return 0; 
} 
+1

または単に 'void printFirstWord(char string []){int i; for(i = 0; isalpha(string [i]); i ++)putchar(string [i]); } ' – Dmitri

+1

' gets_s'にはパラメータがありません。保証された利用可能な関数 'fgets'を使わないのはなぜですか? – Olaf

+0

ありがとうございました、あなたはすべてをはるかに明確にしました! –

-2

gets()は入力を受け付け、印刷しないために使用されます。

使用すると、あなたの関数printFirstWord(で基本的には、この代わりに

fgets(string, 100, stdin); 

のようなもの)あなただけの時間で、文字列の文字を印刷しています。

このような何かがうまくいくかもしれない:

if(string[i]==" ") { 
break; 
} 
+0

'' '' - > ''''? – BLUEPIXY

+0

if(string [i] == ""):これはコンパイルされません –

+2

ようこそスタックオーバーフローへ。他の2人があなたの答えの欠陥を(正しく)指摘していることに注意してください。あなたはあなたの答えを修正することが許され、奨励されています(答えの左下に 'edit'リンクを使います)。あなたがそれを修正しなければ、あなたの答えは投票され、削除されます。 –

関連する問題