Io.h per lettura file di testo

di Unqualunque il
2 risposte
Sto provando ad utilizzare la libreria privata di basso livello <io.h> per aprire e leggere un file di testo ASCII.

in estrema sintesi:

	// Apertura del file:
	int hFile = _open( swFilename, _O_TEXT | _O_RDONLY );

	// Determinazione della dimensione:
	long size = _filelength( hFile );

	// Allocazione del buffer:
	char *buffer = malloc( size * sizeof(char) );
	
	// Scrittura sul buffer:
	long nRead = _read( hFile, buffer, size );
Se apro il file in modalità testo, il contenuto viene interpretato e ogni coppia di caratteri \r\n è rimpiazzata con un singolo \n. Questo fa si che non vi sia corrispondenza tra dimensione del file ed il numero di caratteri letti (size != nRead).
Allora si pone il problema di determinare correttamente la dimensione buffer da allocare. Qualche suggerimento?

Non ho problemi se apro il file in modalità binaria e poi aggiungo il terminatore nullo, ma se la _wopen è stata pensata per aprire il file in modalità _O_TEXT penso che debba esserci una soluzione per il corretto utilizzo di questo caso.

2 Risposte

  • Grazie oregon per la risposta.
    La documentazione descrive quello che ho scritto sopra, ovvero che ogni coppia di caratteri \r\n è sostituita con un singolo \n, ma non fornisce una risposta sulla corretta determinazione della dimensione del buffer. Oppure mi sto perdendo qualcosa?

    La risposta sarà che dovrò comunque allocare un buffer con dimensione del file originario per poi posizionare il terminatore nullo alla fine del testo ristretto?
Devi accedere o registrarti per scrivere nel forum
2 risposte