puts和fputs的换行问题

img

img


第一个输入apple pie的puts在内存中是apple pie\n后面全是\0,所以会换行,不明白既然fputs没有换行符,输出apple pie 后面应该紧跟enter another string这句话,怎么后面的这句话自动换行了,就和最下面Done一样连在一起,为什么

fgets读取14个字符,由于apple pie不足14个,所以换行符也读入字符串了。而puts在输出字符串后,本身会换行,所以输出就有两次换行,而fputs只是输出字符串,不会自动换行,所以只输出一个换行
而你第二个输入的字符串,由于长度超过14,所以实际只读入13个字符加一个字符串结束符,是没有读入换行符的。所以puts输出字符串加自动换行,而fputs输出字符串但不自动换行,因此输出Done时就显示在fputs输出字符串之后了