执行下面代码的时候,当输入3个含有5个字符的字符串时候,为什么输出时每行之间会有2个换行符?
#include<stdio.h>
#include<string.h>
main()
{
FILE *fp,*fp2;
char s[6];
int i;
char c;
char d[6];
fp=fopen("f1","wb");
for(i=1;i<=3;i++)
{
printf("输入一串字符:\n");
gets(s);
fputs(s,fp);
fputc('\n',fp);
}
fclose(fp);
fp2=fopen("f1","rb");
fgets(d,6,fp2);
while(!feof(fp2))
{
c=d[strlen(d)-1];
if(c=='\n')
{
d[strlen(d)-1]='\0';
}
puts(d);
fgets(d,6,fp2);
}
system("pause");
}
输入
11111
22222
33333
时,输出的结果为
11111
22222
33333
为什么中间会多出一行,但是如果每次输入4个字符,就不会有这种情况,求解.
fgets、gets、fputs、puts函数对'\n'换行符和'\0'分别是怎么处理的???