c语言文件读取数组变成乱码

在学生信息文件读取过程中,学号,成绩等数字信息全变成乱码了

这个是文本文件内容:

img

typedef struct
{
    int key; char name[9]; int age;
    char sex; int score;
}rectype;
FILE*f,*fp1;int choice,i;
    f = fopen(".\\stu1.txt", "r");
    for(int i=1;i<=4;i++)
    {
        fscanf(f, "%d %s %d %c %d", &R[i].key, R[i].name, &R[i].age, &R[i].sex, &R[i].score);
    }
    printf("文件中的学生信息是:\n");
    for (i = 1; i <= 4; i++)
    {
        printf("%d %s %d  %c %d\n", &R[i].key, R[i].name, &R[i].age, &R[i].sex, &R[i].score);
    }
    fclose(f);

数字位置全变成乱码了 表示性别的那个字符也乱码了

img

把文件格式改成ansi之后只是大致格式变整齐了其他的数字还是乱码
不知道为什么 求解答

把printf的&删掉


FILE*f,*fp1;int choice,i;
    f = fopen(".\\stu1.txt", "r");
    for(int i=1;i<=4;i++)
    {
        fscanf(f, "%d %s %d %c %d", &R[i].key, R[i].name, &R[i].age, &R[i].sex, &R[i].score);
    }
    printf("文件中的学生信息是:\n");
    for (i = 1; i <= 4; i++)
    {
        printf("%d %s %d  %c %d\n", R[i].key, R[i].name, R[i].age, R[i].sex, R[i].score);
    }
    fclose(f);
 

printf 的时候把 & 去掉