回 帖 发 新 帖 刷新版面

主题:结构体指针问题请教

下面是我写的一个输出五个学生信息的结构体,用指针调用为什么输出的name不是字符串而是单个字符??我的确用的是%s标记的啊,请大家赐教,谢谢。我控制输出列的语句用[color=FF0000]红色[/color]标出

#include<stdio.h>
struct student
{
    int num;
    char name[20];
    float score[3];
    
};
void print(struct student stu[])
{    for(int j=0;j<5;j++)
        [code=c]
[code=c]
printf("\n学号:%d\n姓名:%s\n三门课成绩%5.1f,%5.1f,%5.1f\n",stu[j].num,
        stu[j].name,stu[j].score[0],stu[j].score[1],stu[j].score[2]);
[/code]
[/code]}
void main()
{
    struct student stu[5],*p=stu;
    int i;
    printf("请分别输入五个学生的学号、姓名、三门课成绩\n");
    for(i=0;i<5;i++)
        scanf("%d%S%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1
        ],&stu[i].score[2]);
    print(p);
}

回复列表 (共5个回复)

沙发

scanf里的字符串输入那里怎么是%S??

板凳

那你认为该怎么改正呢?

3 楼


指点一下

4 楼


[code=c]
#include<stdio.h>
struct student
{
    int num;
    char name[20];
    float score[3];
    
};
void print(struct student stu[])
{    for(int j=0;j<5;j++)
        



printf("\n学号:%d\n姓名:%s\n三门课成绩%5.1f,%5.1f,%5.1f\n",stu[j].num,
        stu[j].name,stu[j].score[0],stu[j].score[1],stu[j].score[2]);

}
void main()
{
    struct student stu[5],*p=stu;
    int i;
    printf("请分别输入五个学生的学号、姓名、三门课成绩\n");
    for(i=0;i<5;i++)
        scanf("%d%S%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);//这里格式化输入出错了%S应改成%s,就OK了
    print(p);
}

[/code]

5 楼

啊,果然是这里错了,太隐密了,谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册