c语言将文件内容输入输出

你好,请问为什么会出现这种情况

img

#include
#include
void tj();
void yl();
void menu();
struct number
{
    char no[20];
    char name[20];
    char address[20];
    char phone[20];
}s[100];
int main()
{
    int i;
    menu();    
    scanf("%d",&i);
    switch(i)
    {
        case 1:tj();break;
        case 2:yl();break;
    }
}
void tj()
{
    int i=0,m;
    FILE *fp;
    char ch;
    fp=fopen("C:/Users/陈/Desktop/student.dat.txt","r");
    ch=fgetc(fp);
    if(ch==NULL)
    {
        printf("打开失败");
    }
    else
    {
        fclose(fp);
        printf("输入Y继续输入,输入N退出\n");
        scanf("%c",&ch);
        getchar();
        while(ch=='Y')
        {
            printf("学号");
            gets(s[i].no);
            printf("姓名");
            gets(s[i].name);
            printf("地址");
            gets(s[i].address);
            printf("电话号码");
            gets(s[i].phone);
            i++;
            printf("输入Y继续输入,输入N退出\n");
            scanf("%c",&ch);
            getchar();
        }
        fp=fopen("C:/Users/陈/Desktop/student.dat.txt","a");
        ch=fgetc(fp);
        if(ch==NULL)
        {
            printf("打开失败");
        }
        else
        {
            for(m=0;m<=i;m++)
            {
                fwrite(&s[m],sizeof(s),1,fp);
            }
            fclose(fp);
        }
    } 
}
void yl()
{
    FILE *fp;
    char ch;
    int i=0,m;
    fp=fopen("C:/Users/陈/Desktop/student.dat.txt","r");
    ch=fgetc(fp);
    if(ch==NULL)
    {
        printf("未找到学生信息"); 
    }
    else
    {
        fseek(fp,0,SEEK_SET);
        while(!feof(fp))
        {
            fread(&s[i],sizeof(s),1,fp);
            i++;
        }
        for(m=0;mprintf("学号%s",s[m].no);
            printf("姓名%s",s[m].name);
            printf("地址%s",s[m].address);
            printf("电话号码%s",s[m].phone);
        }
    }
}
void menu()
{
    printf("1.添加学生信息\n");
    printf("2.浏览学生信息\n");
}

%d你输入了1,后面带个换行符
后面getchar直接获得了换行符