2010-09-01 8 views
5

Ho un file di testo orientato alla linea (Unicode) che è stato creato utilizzando CreateFile() e WriteFile().Leggere il file di testo (Unicode) in "C" utilizzando Win32 nativo

Leggere quel file come un flusso binario usando ReadFile() è semplice, ma è necessaria un'ulteriore elaborazione di basso livello per suddividerla in linee.

Esiste una funzione Win32 che fa questo per me?

Anche in questo caso, si noti che è in "C" (non in C++) e non si desidera utilizzare le funzioni POSIX/ANSI C come readline().

Se la risposta alla domanda di cui sopra è negativa, quale sarebbe il "codice più breve" per eseguire la lettura di un file di testo orientato alla linea, utilizzando solo le funzioni native Win32 C? per esempio. utilizzando ReadFile(), StrChr(), ecc.

Grazie.

+1

Intendi UTF-16LE? – dreamlax

+0

Sì. UTF-16, Little Endian. –

+0

Ugh. MSVC CRT supporta questo. "ccs" nell'argomento della modalità fopen(), quindi solo fgetws(). –

risposta

4

AFAIK non esiste una funzione win32 per la lettura di file riga per riga.

+0

Questo è in effetti ciò che ho osservato finora dall'esame: http://msdn.microsoft.com/en-us/library/aa364232%28VS.85%29.aspx Ma potrei mancare qualcosa. –

+0

Il seguente grande articolo mostra inequivocabilmente che non esiste un equivalente gets() in Win32: http://www.apitalk.com/windows-Programming/Why-Unicode-Is-Important-Before-You-Start-To- Program.html Quindi il prossimo passo per me è creare la mia funzione per simularlo, usando ReadFile() e StrChr(). –

+0

Il link apitalk.com è morto ... [Questo] (http://support.microsoft.com/kb/99456) non lo è, e conferma la tua conclusione. – WinWin

Problemi correlati