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?
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.
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.
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