Программа игры в кости не запускается, но не останавливается на 5 бросках

Я получаю две ошибки:

Error 3 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

и:

Error 4 error LNK1120: 1 unresolved externals

Поскольку я не могу запустить программу, я также не уверен, будет ли случай «А» генерировать бросок или нет. Я не хочу отображать результаты в случае «А», и я чувствую, что scanf не должно быть там, но я могу ошибаться.

Вот мой код:

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

#define PAUSE system("pause")


int main ()
{
    int diceOne, diceTwo, diceThree;
    int currentDiceSum=0, totalDiceSum=0;
    char choice;
    int count = 0;

    srand((unsigned)time(NULL));

    diceOne      =rand()%6+1;
    diceTwo      =rand()%6+1;
    diceThree    =rand()%6+1;

    do {
        printf("\n Roll the dice, but you only get 5 rolls! You can't play forever, you know. \n");

        printf("Main Menu\n");
        printf("A.Roll the Dice\n");
        printf("B.Display the Result of Last Roll\n");
        printf("C.Quit\n");

        printf("Enter your choice:   ");
        scanf(" %c", &choice);

        choice = toupper(choice);

        switch(choice) {
            case 'A': 
                printf("Dice are rolled!'\n");

                diceOne      =rand()%6+1;
                diceTwo      =rand()%6+1;
                diceThree    =rand()%6+1;


                count ++;
                break;
            case 'B':  
                if (count = 0) {
                    printf("Please roll the dice atleast once\n");
                }  else {
                    printf("Dice 1: %d\n", diceOne);
                    printf("Dice 2: %d\n", diceTwo);
                    printf("Dice 2: %d\n", diceThree);

                    currentDiceSum = diceOne + diceTwo + diceThree;
                    printf("Dice Total: %d\n", currentDiceSum);
                    totalDiceSum+= currentDiceSum;
                }
                break;
            case 'C':
                if (count == 5)  
                    printf("Number of rolls: %d\n", count);

                printf("Total of all dice for all rolls:%d\n",totalDiceSum);
                printf("Goodbye, hope to see you again!!!\n");
                PAUSE;
                break;

            default:
                printf("Was not a valid menu choice (Please enter A,B,C\n");
                break;
        }
    } while (choice!= 'C'); 
}

person user5083544    schedule 09.07.2015    source источник
comment
Пожалуйста, делайте правильный отступ в коде; это нечитабельно. Ошибка выглядит так, как будто отсутствует какая-то библиотека. Я не знаю Windows, но: может быть, вы компилируете Windows-приложение вместо консольного приложения?   -  person too honest for this site    schedule 09.07.2015
comment
@Olaf: у меня есть редактирование в очереди, которое исправляет форматирование.   -  person rost0031    schedule 09.07.2015
comment
Кроме того, вы назначаете count = 0 в case 'B':, когда вы, вероятно, имеете в виду проверку, если count == 0   -  person rost0031    schedule 09.07.2015
comment
какой компилятор? какая платформа? недостаточно информации   -  person Levi    schedule 09.07.2015
comment
Ваш scanf перезаписывает случайные значения, которые вы только что сгенерировали. Также в некоторых ваших printfs отсутствуют новые строки.   -  person stark    schedule 09.07.2015
comment
scanf("%d","%d","%d", &diceOne, &diceTwo, &diceThree); --› scanf("%d" "%d" "%d", &diceOne, &diceTwo, &diceThree); (вычеркнуть 2 запятые)   -  person chux - Reinstate Monica    schedule 09.07.2015
comment
Подсказка: rand() % 6 скорее всего не даст равномерного распределения.   -  person too honest for this site    schedule 09.07.2015


Ответы (1)


Ошибка 3 error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup

Это сообщение об ошибке компоновщика.

Я думаю, вы создали приложение Windows с графическим интерфейсом, так как оно требует WinMain в качестве точки входа.

Вы должны изменить subsystem на console в настройках компоновщика.

Если вы используете Visual Studio, перейдите к

Project properties потом c\c++ потом linker ->system-> Subsystem :CONSOLE(/SUBSYSTEM CONSOLE)

Для кодовых блоков -

Идите к Project, затем Properties. На вкладке Build targets см. поле со списком Type. Для цели Debug установите «Консольное приложение».

Кроме того, ваша программа работает нормально. Никаких дополнительных ошибок в ней нет, а также она не вылетает.

person ameyCU    schedule 09.07.2015