2014-07-03 3 views
-1

программа по-прежнему очень пуста и «голая», потому что им просто пытаются избавиться от этой логики, прежде чем я действительно начну создавать функции. По какой-то причине, независимо от моего 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]); 
    } 
} 

Edit 1: djikay: Исправлена ​​-1 до 0, Рики: Как исправить помощь() и а(), чтобы вызвать только один пользователь вводит после имени программы (EX: саа-а)? Я также зафиксировал выход (0). Благодаря

+3

Скажите, пожалуйста, что '-1' в этом опечатке:' recognised_commands [-1] '. – djikay

+1

Это: char charified_commands [3] = {help(), a()}; ', похоже, пытается присвоить возвращаемое значение' help() ', но функция' help() 'ничего не возвращает , он просто печатает сообщение. –

+2

Существует довольно некоторая работа над циклом 'for' ... – jcaron

ответ

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

Эта строка, безусловно, ваша проблема. help() и a() оба вызываются, таким образом выходя из вашей программы.

Почему вы пытаетесь присвоить эти возвращаемые значения функции? Обе функции: void в обратном типе, то есть они ничего не возвратят.

На боковой ноте, вызывая exit() с 0 в качестве аргумента, означает, что ваша программа вышла без ошибок. Я выйду с 1, если это из-за ошибки (или даже лучше, EXIT_SUCCESS и EXIT_FAILURE, соответственно).

3

Линия:

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

вызывает как help и a называться. Сначала вызывается help, и он выводит справочное сообщение &.

+0

Это должно сгенерировать ошибку компиляции, поэтому она должна не вызывать 'help' и т. д. –

Смежные вопросы