2010-09-01 20 views
5

Tengo un archivo de texto orientado a línea (Unicode) que se creó usando CreateFile() y WriteFile().Leer archivo de texto (Unicode) en 'C' usando Win32 nativo

Leer ese archivo como una secuencia binaria utilizando ReadFile() es sencillo, pero se necesita un procesamiento de bajo nivel para dividirlo en líneas.

¿Hay una función de Win32 que hace esto por mí?

Nuevamente, tenga en cuenta que está en 'C' (no en C++) y no quiero usar funciones POSIX/ANSI C como readline().

Si la respuesta a la pregunta anterior es negativa, ¿cuál sería el "código más corto" para lograr la lectura de un archivo de texto orientado a línea, utilizando únicamente funciones nativas Win32 C? p.ej. utilizando ReadFile(), StrChr(), etc.

Gracias.

+1

¿Quiere decir UTF-16LE? – dreamlax

+0

Sí. UTF-16, Little Endian. –

+0

Ugh. El MSVC CRT es compatible con esto. "ccs" en el argumento de modo fopen(), luego solo fgetws(). –

Respuesta

4

AFAIK no hay función win32 para leer el archivo línea por línea.

+0

Esto es de hecho lo que he observado hasta el momento de examinar: http://msdn.microsoft.com/en-us/library/aa364232%28VS.85%29.aspx Pero me puede estar perdiendo algo. –

+0

El siguiente gran artículo muestra inequívocamente que no hay equivalente a gets() en Win32: http://www.apitalk.com/windows-Programming/Why-Unicode-Is-Important-Before-You-Start-To- Program.html Así que el siguiente paso para mí es crear mi propia función para imitar eso, usando ReadFile() y StrChr(). –

+0

Ese enlace de apitalk.com está muerto ... [Este] (http://support.microsoft.com/kb/99456) no lo está, y confirma su conclusión. – WinWin

Cuestiones relacionadas