Почему функции пропускаются без чтения? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь написать код, чтобы он открывал файл (работника и льготы), а затем отображал их по запросу в начале.Я могу сделать это, но я хотел бы использовать функции.Когда я запускаю свою программу, она заканчивается, как только начинается.Как настроить функции так, чтобы они запускались.

Я попытался переименовать функции безуспешно.Я также не нашел помощи в обучающих программах Youtube.

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

int ans;
char Benefits[150];
char Worker[150];

int readfile();
int end();
int welcome();

int main()
{



  int welcome()
  {
    puts("Hi, Welcome to whatever this is!!\n");
  }

  int readfile()
  {



    FILE*fpointer;
    fpointer = fopen("Worker.txt","r");
    char Worker[150];

    while(!feof(fpointer))
    {
      fgets(Worker, 150, fpointer);

    }
    FILE*fpointer1;
    fpointer = fopen("Benefits.txt","r");
    char Benefits[150];

    while(!feof(fpointer))
    {
      fgets(Benefits, 150, fpointer1);

    }
    fclose(fpointer);
  }

  int menu(char Benefits)
  {
    {
      printf("1 - For option 1\n");
      printf("2 - For option 2\n");
      printf("3 - For option 3\n");
      printf("4 - For option 4\n");
      printf("5 - exit\n");

      scanf("%1d", &ans);
    }

    {
      if (ans==1)
        puts(Benefits);

      if (ans==2)
        puts(Worker);

      if (ans==3)
        puts("This is option3");

      if (ans==4)
        puts("This is option4");
    }
  }

  return 0;
}

Я ожидаю, что вывод распечатает либо файлы, либо завершится.На данный момент он пропускает функции и завершает программу.

1 Ответ

1 голос
/ 08 мая 2019

Функции должны быть вне основной функции.В вашей основной функции вы вызываете функции по мере необходимости.

int main()
{
   welcome();
   readfile();

etc.

   return 0;
}

Чтобы быть действительно полезными, функции могут принимать параметры.Если вы определяете readfile таким образом, вы объявляете параметр с именем filename , который содержит имя файла.Вы можете использовать это внутри своей функции вместо того, чтобы писать точное имя файла.

int readfile (char *filename)
{
  ...
  fpointer = fopen(filename,"r");
  ...
}

Теперь в основном вы можете использовать

int main()
{
   welcome();
   readfile("Workers.txt");
   ...
}

Это то, что делает функции полезными.Теперь вы можете повторно использовать функцию для другого файла с другим именем.Это не решение для вас, но я надеюсь, что это поможет, даже если только с вашим пониманием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...