程序崩溃并返回255

时间:2013-10-19 22:18:51

标签: c crash

我正在编写“Rock,Papers and Scissors”计划。当玩家输掉或赢得比赛时,它会跟踪玩家的得分并将其保存到磁盘。但我不知道为什么,程序运行,没有构建错误或警告,但每当分数改变时,程序崩溃并返回255.

// Pedra, papel e tesoura

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

void showRes(int cho1);

int scorei;
char score[128];

int main()
{
    int ctemp,done;
    char cho1;
    FILE *sco;

    sco = fopen("score.txt","r");
    if(sco == NULL)
        scorei = 0;
    else
    {
        fread(score,128,1,sco);
        scorei = atoi(score);
    }
    fclose(sco);
    sco = fopen("score.txt","w");

    srand((unsigned)time(NULL));
    done = 0;
    printf("Pedra, Papel e Tesoura\n");
    do
    {
        printf("\n Score: %08d\n",scorei);
        printf("\nDigite '1' para 'Pedra', '2' para 'Papel', '3' para 'Tesoura' ou 'Q' para sair: ");
        cho1 = toupper(getchar());
        fflush(stdin);
        ctemp = cho1;
        switch(ctemp)
        {
            case 49:
            case 50:
            case 51:
                showRes(ctemp);
                break;
            case 81:
                done = 1;
                break;
            default:
                printf("Escolha Inv%clida!\n",160);
                break;
        }
        fwrite(scorei,sizeof(int),1,sco);
        printf("\nsalvo com sucesso\n\n");
    }
    while(!done);
    fclose(sco);

    return(0);
}

void showRes(int cho)
{
    int ia;

    ia = rand() % 3 + 1;

    if(cho == 49)
    {
        printf("Voc%c escolheu Pedra!\n",136);
        switch(ia)
        {
            case 1:
                printf("O Computador escolheu Pedra!\n");
                printf("Empate!");
                break;
            case 2:
                printf("O Computador escolheu Papel!\n");
                printf("Voc%c perdeu!",136);
                scorei -= 100;
                break;
            case 3:
                printf("O Computador escolheu Tesoura!\n");
                printf("Voc%c venceu!\n",136);
                scorei += 100;
                break;
            default:
                break;
        }
    }
    if(cho == 50)
    {
        printf("Voc%c escolheu Papel!\n",136);
        switch(ia)
        {
            case 1:
                printf("O Computador escolheu Pedra!\n");
                printf("Voc%c venceu!\n",136);
                scorei += 100;
                break;
            case 2:
                printf("O Computador escolheu Papel!\n");
                printf("Empate!\n");
                break;
            case 3:
                printf("O Computador escolheu Tesoura!\n");
                printf("Voc%c perdeu!\n",136);
                scorei -= 100;
                break;
            default:
                break;
        }
    }
    if(cho == 51)
    {
        printf("Voc%c escolheu Tesoura!\n",136);
        switch(ia)
        {
            case 1:
                printf("O Computador escolheu pedra!\n");
                printf("Voc%c perdeu!\n",136);
                scorei -= 100;
                break;
            case 2:
                printf("O Computador escolheu Papel!\n");
                printf("Voc%c venceu!\n",136);
                scorei += 100;
                break;
            case 3:
                printf("O Computador escolheu Tesoura!\n");
                printf("Empate!\n");
            default:
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

不一定是崩溃的原因,但是您正在读取文件,就好像它包含文本,但是将二进制值写入其中。此外,连续值正在添加到文件中,但您只能读取1个。