两个程序A.处exit(0),与exit(1)有什么区别?,第一个程序B处麻烦解释一下 - 爱问答

(爱问答)

两个程序A.处exit(0),与exit(1)有什么区别?,第一个程序B处麻烦解释一下

#include<stdio.h>

#include<stdlib.h>

int main(void)

{

FILE *fp;

long num;

char stname[20];

int score,i;

double average;

if((fp=fopen("C:lt12.1.txt","r"))==NULL){

printf("File open error!");

exit(0);//------------------------------------A

}

for(i=0;i<5;i++){

   fscanf(fp,"%ld%s%d",&num,stname,&score);

printf("%ld %s %d ",num,stname,score);

average+=score;

}

printf("average=%.2f",average*1.0/5);

if(fclose(fp)){//-------------B

printf("Can ont close file ");

exit(0);

}

return 0;

}

--------------------------------------------------------

C:lt12.1.txt

301101 zhangwen 75

301102 chenhui 85

301103 wangweidong 89

301104 zhengwei 69

301105 guowentao 55


---------------------------------------------------------

#include<stdio.h>

#include<stdlib.h>

int main()

{

int sum,*p,i,n;

printf("Enter n:");

scanf("%d",&n);

    if((p=(int *) calloc(n,sizeof(int)))==NULL){

    printf("Not able to allocate memory ");

    exit(1);//-----------------------------------A

}

for(i=0;i<n;i++)

scanf("%d",p+i);

sum=0;

for(i=0;i<n;i++){

sum=sum+*(p+i);

}

free(p);

printf("sum=%d",sum);

return 0;

}


exit函数后面的参数,是返回给主进程的(与main 的return后面值功能相同)

如在windows下的命令行下,你可以用ERRORLEVEL得到一个执行文件的返回值

这个值只有特殊况下才用的,如在主进程判子进程执行是否正常,像你的程序一,

你的exit(0)没有意义 ,因为你正常是retutn 0;返回值也就是0

而exit(0)返回的也是0

对程序二,你的exit(1)是可以用于对该程序的返回进行判断,正常是return 0;而若内存没有申请到,程序就返回1

程序的B处,是判断文件能否被正常关闭,这个判断也没有什么意义 ,因为一般况下,文件是不可能不能关闭(除非系统有故障了)


下一篇:我的笔记本如下配置,还有两个出风口,吃鸡cpu温度99度怎么办

上一篇:硬盘数据能恢复到U盘吗?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?