C语言主函数的返回值

现代标准的C语言主函数形式总是带有一个int型的返回值,这个返回值返到哪里?又有什么用呢?

一、获取C语言程序的返回值

有如下程序:

int main(void)
{

    return 0;
}

我们要得到这个返回值,可惜的是要得到这个返回值,需要使用操作系统的平台特性,本文的实验在windows操作系统下进行。

在windows操作系统中,主函数的返回值默认下被保存在一个称为errorlevel的系统变量中。我们做实验。

实验一:系统获取C语言主函数的返回值

程序如下:

// main_return.c
#include <stdio.h>
int main(void)
{
    printf("hello,world\n");

    return 5;
}

编译:

gcc main_return.c -o main_return.exe

后执行main_return.exe程序,将输出hello,world,然后再windows控制台下,输入如下语句:

echo %errorlevel%

将打印 5。

这里echo是windows的控制台命令,可用于输出系统变量的值,其形式为:

echo %系统变量%

即,系统变量要用两个百分号引起来。如何使用这个变量呢?

在设计C程序时,根据程序执行的不同结果,返回不同的值,一般返回0表示顺利执行,返回不同的整数,表示执行过程中发生不同的错误,这个返回值可以作为一个错误代码。

二、windows批处理脚本中使用C程序的返回值

最常见的情形是,在windows脚本调用一个C程序,根据不同的返回值给出下一步操作。

实验二:多种可能返回值的C程序调用

下面C程序完成一个简单的除法运算,除法要求除数不能为0,当除数为0时,我们返回1,除数不为0时,即程序可以顺利执行时,返回0。程序如下:

// main_multiple_return.c
#include <stdio.h>
int main(void)
{
    double num1, num2;

    printf("Enter two number: ");
    scanf("%lf %lf", &num1, &num2);
    if(num2 == 0) 
        return 1;
    printf("The result is %.2f\n", num1 / num2);
    return 0;
}

首先单独执行这个程序,编译,执行后,若输入:

Enter two number: 4 3

将得到如下结果:

The result is 1.33

此时,执行:

echo %errorlevel%

将得到0。

若输入:

Enter two number: 4 0

将没有输出,执行:

echo %errorlevel%

将得到1。

下面写一个windows批处理脚本来自动执行这个程序并得到相应的返回值。

首先在main_multiple_return.c编译后得到可执行文件的目录下用记事本新建一个txt文件,然后名称改为test_main_return后缀名该文bat。全名为test_main_return.bat

然后用记事本打开,写入如下代码:

@echo off
title test_main_return
main_multiple_return.exe
if %errorlevel% == 0 (
    echo OK
) else if %errorlevel% == 1 (
    echo ERROR: The divisor cannot be 0
)
@pause

这个批处理脚本中,可以有两种方式指向,一是在控制台下在该脚本所在目录下直接执行test_main_return.bat,二是用鼠标双击执行。

第1行的@echo off用于关闭回显;

第2行的title test_main_return 用于设置弹出的控制台的标题;

第3行执行我们写的main_multiple_return.c 程序编译后生成的exe文件;

第4-8行用于判断errorlevel系统变量得到的值,并得到相应的动作;

第9行的@pause用于阻止控制台闪退,如果没有这一行,鼠标双击,脚本执行完成后,控制台会自动退出。

保存后,鼠标双击,可弹出一个控制台,标题为test_main_return,并运行了main_multiple_return.c程序,如下图所示。

当输入 4 3时,返回提示:

The result is 1.33
OK
请按任意键继续. . .

当输入 4 0时返回提示:

ERROR: The divisor cannot be 0
请按任意键继续. . .
三、其它C程序中使用C程序

可以编写一个C程序调用另外一个C程序,得到返回值。

实验三:C程序得到另一个C程序的返回值
// test_main_return.c
#include <stdio.h>
#include <windows.h>
int main(void)
{
    int return_value;

    printf("Execute main_multiple_return.exe\n");
    return_value = system("main_multiple_return.exe");
    if(return_value == 0) {
        printf("OK\n");
    } else if(return_value == 1) {
        printf("ERROR: The divisor cannot be 0\n");
    }

    return 0;
}

将这个程序和main_multiple_return.c放入到同一个目录下,编译后执行,结果为:

Execute main_multiple_return.exe
Enter two number:

当键入4 3时,返回为:

Execute main_multiple_return.exe
Enter two number: 4 3
The result is 1.33
OK

当键入为4 0时,返回为:

Execute main_multiple_return.exe
Enter two number: 4 0
ERROR: The divisor cannot be 0

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值