lmh00 发表于 2017-7-14 15:34:03

为什么会出现段错误

#include <stdio.h>
int main()
{
        typedef struct{
                char name;
                int NO;
                int score;
        }STU;
        STU a;
        printf("请依次输入5个学生的姓名、学号、成绩\n");
        int i;
        for(i=0;i<5;i++)
                scanf("%s,%d,%d",&a.name,&a.NO,&a.score);
        FILE *fp;
        fp=fopen("file.dat","rb+");
        for(i=0;i<5;i++)
                fwrite(&a,18,5,fp);
        fclose(fp);
}

这段代码能正常通过编译,可是在输入数据的时候,每次输到第二个学生的成绩是就会报错,提示段错误,程序就会异常退出,求大神帮忙{:5_92:}

ba21 发表于 2017-7-14 16:37:58

求道于盲 发表于 2017-7-14 18:14:51

因为你的输入的格式控制字符串写错
注意不是输入的数据错了

是你的格式控制字符串写错了

%s 后面不能写,
因为这个,是%s的狩猎范围
你输入
1,1,1
会被当成一个%s的获取数据
全部写入到name里面
后面就全部错位了

不要用逗号分隔
直接空格分隔不是很好么
页: [1]
查看完整版本: 为什么会出现段错误