该计划仍然非常空虚,并且#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)。感谢
答案 0 :(得分:3)
该行:
char recognised_commands[3] = {help(), a()};
导致调用help
和a
。首先调用help
,然后打印出帮助消息&amp;退出程序。
答案 1 :(得分:1)
char recognised_commands[3] = {help(), a()};
这一行肯定是你的问题。 help()
和a()
都被调用,从而退出程序。
为什么要尝试在那里分配这些函数返回值?这两个函数都是void
的返回类型,这意味着它们无论如何都不会返回任何内容。
在旁注中,调用exit()并将0作为参数意味着您的程序退出时没有错误。如果由于错误(或者甚至更好,分别是EXIT_SUCCESS和EXIT_FAILURE),我将退出1。