Что такое значение выхода 5 и почему я продолжаю получать эту ошибку при запуске моей программы на C?

#c

#c

Вопрос:

Вот мой main.c файл:

 #include <stdio.h>
#include "functions.h"

int main() {
    helloWorld();
    salaryPeriod();
    return 0;
}
  

И вот мой salaryperiod.c файл:

 #include <stdio.h>

void salaryPeriod() {
    int wage, days, sp1, sp2;
    printf("Please enter wage:n");
    scanf("%d", wage);
    
    printf("Days worked:n");
    scanf("%d", days);
    
    printf("Salary period 1:n");
    scanf("%d", sp1);
    
    sp2 = ((wage * days) / 26) - sp1;
    printf("%d", sp2);
}
  

И вот мой functions.h файл:

 #ifndef FUNCTIONS_H
#define FUNCTIONS_H

void helloWorld();
void exponent();
void fourNumsProduct();
void salaryPeriod();

#endif
  

Кто-нибудь знает, что происходит в моем коде?
Я везде искал статус выхода 5, но результата нет.
(Пожалуйста, будьте проще со мной, я новичок в C)

Комментарии:

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

2. (Знаете ли вы, что вы можете отредактировать свой вопрос? Крошечное серое слово «редактировать» под тегами — это кнопка. Да, это плохой дизайн пользовательского интерфейса. Извините за это.)

3. на какой ОС работает?

4. Функции, которые не принимают параметров, должны быть объявлены с void ключевым словом, например int main(void) , void helloWorld(void) , и т.д.

Ответ №1:

В вашем коде есть несколько дефектов:

  1. Знак амперсанда не указан для выражения адреса памяти в scanf() — возможная причина вашей ошибки:

     scanf("%d", wage); // should be scanf(..., amp;wage);
      
  2. Такие переменные wage, days, sp1, sp2 являются локальными и видны только функции. Его нельзя использовать где-либо за его пределами (если вы этого хотели).

Комментарии:

1. Спасибо за вашу помощь! Я не понимал, что перед моими переменными не было «amp;» в аргументах scanf.