如果返回EXIT_失败而不使用fclose(),会发生什么情况?
假设我使用fopen并认为文件格式对我的程序无效,或者指针为空。当我到达该位置时,不使用fclose而直接返回EXIT\u FAILURE会有什么后果?当文件指针为空或您将文件格式编码为无效时,直接返回EXIT\u FAILURE不会有任何后果。这将是程序的简单退出,返回值为exit_FAILURE。尽管您可以在需要时使用如果返回EXIT_失败而不使用fclose(),会发生什么情况?,c,file,io,fclose,C,File,Io,Fclose,假设我使用fopen并认为文件格式对我的程序无效,或者指针为空。当我到达该位置时,不使用fclose而直接返回EXIT\u FAILURE会有什么后果?当文件指针为空或您将文件格式编码为无效时,直接返回EXIT\u FAILURE不会有任何后果。这将是程序的简单退出,返回值为exit_FAILURE。尽管您可以在需要时使用atexit()函数在退出时清理资源。当文件指针为空或您将文件格式编码为无效时,简单返回退出失败不会产生任何后果。这将是程序的简单退出,返回值为exit_FAILURE。尽管您
atexit()
函数在退出时清理资源。当文件指针为空或您将文件格式编码为无效时,简单返回退出失败不会产生任何后果。这将是程序的简单退出,返回值为exit_FAILURE。尽管您可以在需要时使用atexit()
函数来清理退出时的资源。退出失败是在stdlib.h
库中定义的宏,它扩展到1
。另一方面,宏EXIT\u SUCCESS
常量扩展为0
。在我们的常规约定中,将0
返回到main函数表示代码确实成功运行,否则错误退出
此外,要刷新流并撤消操作,atexit()
将完成这项工作
请注意,我们将全局使用x
,因为在atexit()
中作为参数传递的函数不能传递任何内容。atexit()
的函数签名如下所示:
int atexit (void (*func)(void));
让我们假设以下程序:
#include <stdio.h>
#include <stdlib.h>
// will be used for atexit()
void exit_stuffs(void);
// to use return code
int x;
int main(void) {
int a = 4;
x = (a < 5) ? EXIT_FAILURE : EXIT_SUCCESS;
atexit(&exit_stuffs);
return x;
}
void exit_stuffs(void) {
printf("The return code was: %d\n", x);
}
#包括
#包括
//将用于atexit()
作废退出物料(作废);
//使用返回码
int x;
内部主(空){
INTA=4;
x=(a<5)?退出失败:退出成功;
atexit(退出和退出);
返回x;
}
作废退出物料(作废){
printf(“返回代码为:%d\n”,x);
}
这将
EXIT_FAILURE
分配给x
,然后返回x
。在程序退出时,还提供了一个使用atexit()
的示例。退出失败是在stdlib.h
库中定义的宏,它扩展到1
。另一方面,宏EXIT\u SUCCESS
常量扩展为0
。在我们的常规约定中,将0
返回到main函数表示代码确实成功运行,否则错误退出
此外,要刷新流并撤消操作,atexit()
将完成这项工作
请注意,我们将全局使用x
,因为在atexit()
中作为参数传递的函数不能传递任何内容。atexit()
的函数签名如下所示:
int atexit (void (*func)(void));
让我们假设以下程序:
#include <stdio.h>
#include <stdlib.h>
// will be used for atexit()
void exit_stuffs(void);
// to use return code
int x;
int main(void) {
int a = 4;
x = (a < 5) ? EXIT_FAILURE : EXIT_SUCCESS;
atexit(&exit_stuffs);
return x;
}
void exit_stuffs(void) {
printf("The return code was: %d\n", x);
}
#包括
#包括
//将用于atexit()
作废退出物料(作废);
//使用返回码
int x;
内部主(空){
INTA=4;
x=(a<5)?退出失败:退出成功;
atexit(退出和退出);
返回x;
}
作废退出物料(作废){
printf(“返回代码为:%d\n”,x);
}
这将EXIT_FAILURE
分配给x
,然后返回x
。在程序退出时,还提供了使用atexit()
的示例
当我到达那个位置时,不使用fclose简单地返回退出失败会有什么后果
无,但有一个例外:如果正在写入文件,则某些数据将丢失。基本上就是这样,不管返回什么-EXIT\u失败在典型的操作系统上并不特别
当我到达那个位置时,不使用fclose简单地返回退出失败会有什么后果
无,但有一个例外:如果正在写入文件,则某些数据将丢失。基本上就是这样,返回什么并不重要-EXIT\u失败
在典型的操作系统上并不特别。从main
返回相当于调用EXIT
。所做的一些事情是用未写入的数据刷新流,关闭所有流,并删除使用tmpfile
创建的所有文件。从main
返回相当于调用exit
。所做的一些事情是使用未写入的数据刷新流,关闭所有流,并删除使用tmpfile
创建的所有文件。