为什么printf输出中的新行?

时间:2016-10-21 01:56:47

标签: c printf

    #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;
}

输出始终如下:

&#34;名词马的复数

是马&#34;

即使我没有把\ n放在printf的中间,只是最后。

1 个答案:

答案 0 :(得分:0)

fgets在你输入时从stdin中获取一个尾随的换行符。因此,名词以换行符结束