Main.exe ha smesso di funzionare

di il
4 risposte

Main.exe ha smesso di funzionare

Salve ragazzi, perché quando vado a eseguire il codice mi esce "main.exe ha smesso di funzionare"?
eppure ho anche messo la pulitura del buffer fflush(stdin).....
quando mi chiede procedere? io premo y e crasha il programma.....

sto parlando di #C

grazie a tutti

4 Risposte

  • Re: Main.exe ha smesso di funzionare

    Ecco il codice:

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

    #define MAXCHARCOD 8


    void mainmenu();
    void inseriscipreventivo(int *numeroclienti,int *numeropreventivi);
    int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti);
    void visualizzapreventivi(int numeropreventivi);
    void visualizzazioneclienti(int numeroclienti);



    struct cliente{
    char codfiscale[MAXCHARCOD];
    char nome[MAXCHARCOD];
    char cognome[MAXCHARCOD];
    char indirizzo[MAXCHARCOD];
    }clienti[50];



    struct preventivo{
    int id;
    char data[MAXCHARCOD];
    char codicefiscale[MAXCHARCOD];
    int sconto[MAXCHARCOD];
    char nomemobile[MAXCHARCOD];
    char tipologiamobile[MAXCHARCOD];
    int prezzomobile[MAXCHARCOD];


    }preventivi[50];
    int main()
    {
    mainmenu();
    return 0;
    }
    void mainmenu(){
    char azione;
    int numeropreventivi=0;
    int numeroclienti=0;

    do {
    printf("Gestione mobilificio \n\n");
    printf("1 - Inserisci nuovo preventivo\n");
    printf("2 - visualizzazione preventivi\n");
    printf("3 - Visualizzazione clienti\n");
    printf("0 - Esci\n");
    printf("Inserisci la scelta -> ");
    scanf("%d", &azione);

    //Controllo scelta
    switch (azione) {
    case 0:
    printf("Arrivederci!");
    break;
    case 1:
    system("cls");
    inseriscipreventivo(&numeroclienti,&numeropreventivi);
    break;

    case 3:
    system("cls");
    visualizzapreventivi(numeropreventivi);
    break;
    case 4:
    system("cls");
    visualizzazioneclienti(numeroclienti);
    break;
    default:
    printf("Azione non valida");
    }
    } while (azione != 0);
    }



    void inseriscipreventivo(int *numeroclienti,int *numeropreventivi){
    char cf[MAXCHARCOD];
    int check;
    char azione;


    fflush(stdin);

    printf("Inserisci preventivo\n\n");
    do {
    printf("Codice fiscale (%d caratteri) -> ", MAXCHARCOD);
    gets(cf);

    //Controllo del codiceprodotto se gi? ? stato inserito
    check = controllacodfiscale(cf, *numeroclienti);
    if (check == 1) {
    printf("Codice Fiscale gia' presente!\n\n");



    }
    } while (check == 1);

    fflush(stdin);
    printf("il cliente non e' presente in elenco.continuare? Y o N -> ");
    scanf("%c",&azione);
    if(azione=='y' || azione=='Y'){



    strcpy(clienti[*numeroclienti].codfiscale,cf);
    printf("inserisci nome cliente %s (max %i caratteri)",MAXCHARCOD);
    gets(clienti[*numeroclienti].nome);
    printf("inserisci cognome cliente %s (max %i caratteri)",MAXCHARCOD);
    gets(clienti[*numeroclienti].cognome);
    printf("inserisci indirizzo cliente %s (max %i caratteri)",MAXCHARCOD);
    gets(clienti[*numeroclienti].indirizzo);

    preventivi[*numeropreventivi].id=*numeropreventivi;
    printf("numero preventivo %d",preventivi[*numeropreventivi].id);
    printf("inserisci data (max %i caratteri)",MAXCHARCOD);
    gets(preventivi[*numeropreventivi].data);
    printf("inserisci codicefiscale cliente (max %i caratteri)",MAXCHARCOD);
    gets(preventivi[*numeropreventivi].codicefiscale);
    printf("inserisci nome mobile (max %i caratteri)",MAXCHARCOD);
    gets(preventivi[*numeropreventivi].nomemobile);
    printf("inserisci tipologia mobile (max %i caratteri)",MAXCHARCOD);
    gets(preventivi[*numeropreventivi].tipologiamobile);


    printf("preventivo inserito correttamente!");
    *numeropreventivi+=1;
    *numeroclienti+=1;

    system("PAUSE");
    system("cls");







    } else if (azione == 'n' || azione == 'N') {
    printf("\nPreventivo non associato!!\n\n");

    system("PAUSE");
    system("cls");
    } else {
    printf("ERRORE! Carattere non ammesso");

    system("PAUSE");
    system("cls");
    }


    }

    int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti){


    int i;

    for (i = 0; i < numeroclienti; i++) {
    // se ? verificata l'uguaglianza -> codiceprodotto gi? esistente
    if (strcmp(cf, clienti.codfiscale) == 0) {
    return 1;
    }
    }
    //codiceprodotto non presente
    return 0;

    }
    void visualizzazioneclienti(int numeroclienti){


    int i;
    for(i=0;i<numeroclienti;i++){

    printf("%s,%s,%s",clienti.codfiscale,clienti.cognome,clienti.nome);
    }
    }

    void visualizzapreventivi(int numeropreventivi){
    char cf[MAXCHARCOD];
    int i;
    printf("inserisci codice fiscale cliente (%d caratteri max) -> ",MAXCHARCOD);
    gets(cf);

    for(i=0;i<numeropreventivi;i++){

    if(strcmp(cf,preventivi.codicefiscale)==0){
    printf("%d,%s,%s,%s,%s",preventivi.id,preventivi.data,preventivi.codicefiscale,preventivi.nomemobile,preventivi.tipologiamobile);
    }


    }





    }
  • Re: Main.exe ha smesso di funzionare

    Quando compili ti da qualche warning/errore?
  • Re: Main.exe ha smesso di funzionare

    Grazie mille ho risolto....dato che uso codeblocks non mi dava errori mentre con netbeans mi sono accorto che c'era un warning
  • Re: Main.exe ha smesso di funzionare

    Secondo me avrai altri errori ... sicuramente ci sono delle cose strane, come

    int sconto[MAXCHARCOD];
    int prezzomobile[MAXCHARCOD];

    Vorrei capire a che ti servono dei vettori di int ...
Devi accedere o registrarti per scrivere nel forum
4 risposte