Analisi parametro in argv[]

di il
3 risposte

Analisi parametro in argv[]

Salve,
ho un problema con questa funzione:
void openFile(const char *dir)
{
	DWORD fileSize,RB;

	HANDLE hFile = CreateFile(dir,GENERIC_READ | GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,0,NULL);

	if(hFile == INVALID_HANDLE_VALUE)
	{
		printf("Error n° %d, cannot continue\n",GetLastError());
		printf("Closing...\n");
		system("pause");
		CloseHandle(hFile);
		exit(-1);
	}

	fileSize = GetFileSize(hFile,NULL);
	BaseAddress = (BYTE*)malloc(fileSize);

	if(!ReadFile(hFile,BaseAddress,fileSize,&RB,NULL))
	{
		printf("Error n° %d, cannot continue\n",GetLastError());
		printf("Closing...\n");
		system("pause");
		CloseHandle(hFile);
		exit(-1);
	}
}
La chiamata in main() la effettuo così:
openFile((const char *)argv[1]);
Premetto che tutto funzionava finquando avevo il codice scritto direttamente nel main(),
però per avere un codice più pulito ho spostato tutto nella funzione openFile().
Il problema è che la funzione CreateFile() non mi analizza il paramentro const char *dir;
Non lancia nessun errore,semplicemente continua a funzionare come se non avessi inserito nulla.
Andando nelle proprietà del progetto (uso visual studio 2010) ho cambiato il character set a "Use multiple-byte character set" ma non ha funzionato.
Grazie in anticipo,
Sarajevo.

3 Risposte

  • Re: Analisi parametro in argv[]

    Ho provato e funziona ... legge il file a partire da BaseAddress (dichiarato da qualche altra parte nel tuo codice).

    Probabilmente è il resto del programma che ha problemi.
  • Re: Analisi parametro in argv[]

    Verifica cosa riceve openFile:
    void openFile(const char *dir)
    {
       DWORD fileSize,RB;
    
       HANDLE hFile;
       printf( "La directory richiesta è %s\n", dir );
       hFile = CreateFile(dir,GENERIC_READ | GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,0,NULL);
       printf( "il risultato di CreateFile è %d\n", hFile );
       ...
    
    ... non è che gli passi solo la directory senza il nome del file (me lo chiedo perchè il parametro lo hai chiamato dir)?
  • Re: Analisi parametro in argv[]

    Effettivamente la funzione funziona e riscrivendo parte del main mi sono accorto che c'era un return 0 di troppo.
Devi accedere o registrarti per scrivere nel forum
3 risposte