不能正常工作。我错过了什么?

时间:2014-07-03 01:06:25

标签: c argv

该计划仍然非常空虚,并且#34;裸体"因为在实际开始制作函数之前,我只是试图让逻辑摆脱困境。出于某种原因,无论我的argv [1]是什么,它总是打印"帮助信息"。我错过了什么?我对此声明感觉不好,但我不知道它有什么不对。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void help()
{
    printf("The help message\n");
    exit(1);
}

void a()
{
    printf("The a screen\n");
    exit(1);
}

int main(int argc, char *argv[])
{
    char recognised_commands[3] = {help(), a()};
    int i;

    if (argc != 2)
    {
        fprintf(stderr, "usage of sake: \"sake [option(s)]\"\nFor a full listing of all available commands type \"-help\" or \"--help\"\n\n");
        exit(1);
    }
    for (i = recognised_commands[0]; i != recognised_commands; i++)
    {
        printf(argv[1]);
    }
}

编辑1:djikay:修正了-1到0, Ricky:我如何纠正help()和a()只调用程序名后用户输入的那个(EX:sake -a)?我还修复了退出(0)。感谢

2 个答案:

答案 0 :(得分:3)

该行:

char recognised_commands[3] = {help(), a()};

导致调用helpa。首先调用help,然后打印出帮助消息&amp;退出程序。

答案 1 :(得分:1)

char recognised_commands[3] = {help(), a()};

这一行肯定是你的问题。 help()a()都被调用,从而退出程序。

为什么要尝试在那里分配这些函数返回值?这两个函数都是void的返回类型,这意味着它们无论如何都不会返回任何内容。

在旁注中,调用exit()并将0作为参数意味着您的程序退出时没有错误。如果由于错误(或者甚至更好,分别是EXIT_SUCCESS和EXIT_FAILURE),我将退出1。