• exit()函数和atexit()函数 复习


    这样的函数有什么用途呢?

    嘘~~~~

    上菜(代码)!!

    #include<stdio.h>
    #include<stdlib.h>
    void send (void);
    void failure(void);
    int main(void){
    int n;
    atexit(send);//注册send()函数
    puts("请输入数字:"):
    if(scanf("%d",&n)!=1) { puts(" No integer"); atexit(failure); exit(EXIT_FAILURE); } printf("%d is %s . ",n,(n%2==0)?"even":"odd"); return 0; } void send(void){ puts(" This is cuccess!"); puts(" send cuccess!!"); } void failure(void){ puts("this is failure no cuccess!"); puts("NO cuccess."); }

      运行结果:

    请输入数字:

    2 is even 

    This is cuccess!

    send cuccess!!

    如果输入的是另一个:

    请输入数字:

    sa

    No integer

    this is  failure no success!

    No cuccess.

    This is cuccess!

    send cuccess!!

    看完代码和运行结果,接下来咱们看一下atexit()函数,只需要退出时要调用的函数地址传递给atexit().因为作为函数参数时,函数名代表地址,所以使用send或者failure作为参数。于是atexit()把作为参数的函数调用exit() 执行的函数在列表中进行注册。ANSI保证这个在列表中至少可以放32个函数。

    通过atexit() 调用把每个函数都添加到列表中,最后,调用exit()函数时,按先进后出的顺序执行这些函数。

    而在输入失败时,因为有if()条件语句所以多了failure的类。

    注意:mian()终止时会隐式的调用exit();因此,及时未显示的调用exit(),也会调用failure()

    exit()

    exit()执行了atexit()指定的函数后,将开始清理自身,它会将所有的输出流、关闭所有打开的流并关闭临时文件。然后,exit()把控制返回给主机环境。

  • 相关阅读:
    自定义异常处理
    遍历目录
    快速排序
    Map<String,String>转换json字符串
    Sublime Text 3破解
    替换字符串
    Moss2007迁移步骤
    Sharepoint 2010 定时提醒
    Sharepoint 2010 显示详细错误
    Sharepoint 2010 安装完Micrsoft sharepoint 2010 service pack 1后网站主页报错
  • 原文地址:https://www.cnblogs.com/X404/p/12219571.html
Copyright © 2020-2023  润新知