zoukankan      html  css  js  c++  java
  • 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()把控制返回给主机环境。

  • 相关阅读:
    87 求先序排列
    iOS App用WKWebView加载h5, h5多页面手势返回,h5返回App
    H5判断是手机端浏览器or原生App Webview
    vue-router笔记
    我的博客园页面定制 CSS 代码
    用swiper实现不规则分页滚动 & 给分页器加颜色
    Angular1.6.9 选择本地文件上传后台
    Vue移动端上拉加载更多实现请求分页数据
    导航折叠菜单
    类似于Flipboard页面翻折效果
  • 原文地址:https://www.cnblogs.com/X404/p/12219571.html
Copyright © 2011-2022 走看看