C语言在linux下编译通过,一运行就段错误 200

#include"stdafx.h"#include<stdio.h>#include<stdlib.h>#include"stuscore.h"#defineN3str... #include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include "stuscore.h"

#define N 3

struct student data[N];

void get(struct student *d,int n);
void calculate(struct student *d,int n);
void output(struct student *d,int n);

int main()
{
struct student *d;
d=(struct student*)malloc(sizeof(*d)*N);
get(data,N);
calculate(data,N);
output(data,N);
}
void get(struct student *d,int n)
{
int i;
FILE *r=fopen("students.txt","r");
for(i=0;i<n;i++)
{
fscanf(r,"%s%f%f%f%f",&d[i].name,&d[i].math,&d[i].ch,&d[i].en,&d[i].phy);
}
fclose(r);
}
void calculate(struct student *d,int n)
{
int i;
for(i=0;i<n;i++)
{
d[i].sum=d[i].math+d[i].ch+d[i].en+d[i].phy;
d[i].ave=d[i].sum/4;
}
}
void output(struct student *d,int n)
{
int i;
printf("name match chinese english physical sum ave\n");
for(i=0;i<n;i++)
{
printf("%s %.2f %.2f %.2f %.2f %.2f %.2f\n",d[i].name,d[i].math,d[i].ch,d[i].en,d[i].phy,d[i].sum,d[i].ave);
}
}
该代码在windows下vs能正常运行,但是学linux用gcc编译后,一运行就段错误
展开
 我来答
阿苒ZE
2018-03-06
知道答主
回答量:22
采纳率:100%
帮助的人:3.5万
展开全部
linux里面段错误就是内存访问的错误了,应该是你代码里的内存分配有问题,因为没看到你这里的struct studen的具体定义,只能让你注意看下studen的name这个字符串的定义,txt文件里的name字段有没有超出这个name的定义长度,如果超出了,fscanf就会报内存错误了
更多追问追答
追问
没有超出,windows下用vs运行都没问题
追答
建议在程序某些位置加入打印输出,以便确定错误发生的语句
匿名用户
2018-03-06
展开全部
程序不完整哦,无法测试,请给出stuscore.h及其实现。
追问
头文件中,就声明了struct中的属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kk1394
2018-03-06 · TA获得超过6118个赞
知道大有可为答主
回答量:9700
采纳率:62%
帮助的人:1895万
展开全部
报什么错?依赖问题吧,不同系统库文件又不是一致的。
追问
运行直接显示段错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式