求助:C语言程序在Linux系统下可以运行,在Windows系统里没有报错却无法运行该怎么解决

紫曦阁 2021-05-10 07:11:47
/*源程序change_I/O*/
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAXSIZE
int main(void)
{
FILE *fd;
int i,size,k,num,len;
char *buf;
char buf_r[10],a[100];
len = strlen(buf);
printf("***Welcome to the system of students' scores!***\n\n");
printf("************************************************\n");
printf("********************Design by cbp***************\n");
/*首先调用 open 函数,并指定相应的权限*/
if((fd = fopen("/home/cbp/score.c", "rw" ))<0){
perror("open:");
exit(1);
}
else
printf("open file:score.c");

if((size =fread(buf_r,sizeof(char),1,fd))<0){
perror("read:");
exit(1);
}
else
printf("number:%s\n",buf_r);

num=atoi(buf_r);

for(i=0;i<num;i++){
a[i]=-1;}

for(i=0;i<num;i++){
if((size=fread(buf_r,sizeof(8),1,fd))<0)
{
perror("read:");
exit(1);
}
else{
a[i]=atoi(buf_r);
k=1;
printf("read from file:%d\n",a[i]);
int num1=atoi(buf_r);
if(num1>=90)
printf("youxiu:%d\n",num1);
else { if(num1>=80)
printf("lianghao:%d\n",num1);
else {if(num1>=70)
printf("zhongdeng:%d\n",num1);
else {if(num1>=60)
printf("jige:%d\n",num1);
else printf("bujige:%d\n",num1);}}}}
}
if(fclose(fd) < 0 ){
perror("close:");
exit(1);
}
else
printf("Close score.c\n");
exit(0);
}




...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫曦阁 2021-05-12
  • 打赏
  • 举报
回复
引用 2 楼 it_xiangqiang的回复:
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
好的好的,我学习一下,谢谢你
紫曦阁 2021-05-12
  • 打赏
  • 举报
回复
在windows下把路径改了,但是没有用,应该是null的问题,我上机试试,谢谢你
源代码大师 2021-05-10
  • 打赏
  • 举报
回复
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
自信男孩 2021-05-10
  • 打赏
  • 举报
回复
/home/cbp/score.c这个在windows有这个路径和文件吗?

if((fd = fopen("/home/cbp/score.c", "rw" ))<0){
perror("open:");
exit(1);
}

这个有问题呢,fd应该是和NULL比较。
原因是这个地方没有执行到exit,其实是因为找不到文件fd是NULL了,但是NULL < 0又不满足,所以没有exit,后面直接用fd出现段错误了。

解决办法:

if((fd = fopen("/home/cbp/score.c", "rw" ))==  NULL){
perror("open:");
exit(1);
}

在Windows下试试,看看能不能直接运行perror和exit(windows下没有/home/目录)

楼主需要了解windows 和LINUX系统的区别,不能拿到代码就用,因为会有移植的问题~

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧