• In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 7 di 7

Discussione: Stringhe

Cambio titolo
  1. #1
    I am Pain. L'avatar di The Wind Waker
    Registrato il
    05-03
    Località
    Nuoro
    Messaggi
    1.576

    Stringhe

    Ultimamente lavorando con le funzioni che operando con array di caratteri ( principalmente con strcpy e strcat ) incorro sempre nello stesso errore che fa terminare il programma. Nel debugger lo segnala come "Access Violation 0xC000000x" e cercando su internet ho trovato alcune spiegazioni secondo cui sarebbe legato ad un problema di memoria, come se l'array su cui tento di copiare fosse troppo piccolo per contenere tutto ma in realtà non è così. Qualcuno potrebbe illustrarmi come risolvere il problema?

    P.S: dimenticavo, lavoro in c++


  2. #2
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.311
    quell'errore si verifica quando se andato a scrivere in un area di memoria non assegnata al programma. controlla quando scrivi nell'array. posta il codice.

  3. #3
    I am Pain. L'avatar di The Wind Waker
    Registrato il
    05-03
    Località
    Nuoro
    Messaggi
    1.576
    bool NewYear( fstream File, char FileName[25], int lenght, char Anno[5] )
    {
    Date Appuntamento = { "", "", "" };
    int giorni = 0;

    MessageBox( NULL, "errore1", "errore", MB_OK );

    for ( int count = 0; count < 12; count++ )
    {
    FileName = "";
    strcpy( FileName , mesi[count] );

    if( FileName == "Febbraio" )
    giorni = 28;
    if( FileName == "Novembre" || FileName == "Aprile" ||
    FileName == "Giugno" || FileName == "Settembre" )
    giorni = 30;
    else
    giorni = 31;

    if ( lenght >= ( strlen(FileName) + strlen( Anno ) ) )
    FileName = strcat(FileName, Anno );
    if ( lenght >= ( strlen(FileName) + 5 ) )
    FileName = strcat( FileName, ".dat" );
    File.open( FileName, ios:ut );

    for ( int c = 0; c < giorni; c++ )
    {
    File.write( reinterpret_cast<char *>( &Appuntamento ), sizeof(Date) );
    }
    }

    File.close();

    return true;
    }

    Nota per i dati passati alla funzione:
    1 - fstream File;
    2 - char FileName[25] = "";
    3 - 25
    4 - "2003"
    Nota2: mesi è un array di puntatori char che contiene i nomi dei mesi.


  4. #4
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.311
    innazitutto il lenght deve essere un unsigned int e non un int xchè nn si può fare i confronto tra signed e unsigned. poi all'inizio della funzione invece di char FileName[25] scrivi char FileName[]. la dimensione esatta mettila nella funzione chiamante

  5. #5
    I am Pain. L'avatar di The Wind Waker
    Registrato il
    05-03
    Località
    Nuoro
    Messaggi
    1.576
    Anche con quelle correzioni rimane l'errore.


  6. #6
    Utente L'avatar di devilheart
    Registrato il
    01-03
    Messaggi
    28.311
    allora mandami l'intero programma. con quelle correzioni a me funziona.

  7. #7

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •