2016-10-21 21 views
-2
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(void){ 

    char noun[25]; 
    char plural[28]; 

    fgets(noun,24,stdin); 
    strcpy(plural,noun); 
    int len=strlen(plural); 

    if(plural[len-2]=='h'||plural[len-2]=='s'){ 
     plural[len-1]='e'; 
     plural[len]='s'; 
     plural[len+1]='\0'; 
    }else if(plural[len-2]=='y'){ 
     plural[len-2]='i'; 
     plural[len-1]='e'; 
     plural[len]='s'; 
     plural[len+1]='\0'; 
    }else{ 
     plural[len-1]='s'; 
     plural[len]='\0'; 
    } 

    printf("The plural of noun %s is %s\n",noun,plural); 
    return 0; 
} 

出力は常にこれです:なぜprintf出力に新しい行がありますか?

私は最後に、\ n個のprintfの中央を入れていないにもかかわらず、

「名詞馬の複数の

は馬です」 。

+0

あなたは使用している関数のマニュアルページを読んでいましたか?ヒント:答えは簡単に見つけることができます。 – Olaf

+1

ヒント:「名詞」には何がありますか? – melpomene

+0

私は技術的にはstrcpy()だけです。新しい行は追加されません。 – Andrew

答えて

0

あなたがEnterキーを押すと、fgetsはstdinから末尾の改行文字を受け取ります。したがって、名詞は改行文字で終了します

+0

ありがとう、私はOlafが言ったことをして、それを発見した、どのように入力をscanfで25文字に制限するかについての助け。それはこのscanfですか( "%25s"、名詞) – Andrew

関連する問題