Duda archivos binarios

Soki_fucker

Muy buenas

Tengo un problema, que estoy haciendo un proyecto en C, por el cual yo le paso un archivo por parámetro

El problema viene cuando me dice que si es de texto o binario.

¿Cómo puedo ver si es binario o no?

elkaoD

Pues es binario si tú lo haces binario, básicamente.

1
Ulmo

#1 Resumiento mal y rápido, de texto es si haciendo boton derecho y abriendolo con un editor de texto royo bloc de notas en windows o vim en linux, eres capaz de leerlo. Si es el archivo de otro programa, o un archivo de texto de algun programa royo Office, entonces es un binario.

paulvandyk

No termino de entender la pregunta. Si le pasas un archivo es porque sabes cómo es el archivo, que para eso es tu programa :S

En el caso que detectes que el archivo no es como quieres pues sacas algún mensaje de error.

JuAn4k4

Normalmente el contenttype o mimetype se saca de, o bien el sufijo del fichero (xxx.txt seria de texto), o bien a vecer se puede averiguar el mimetype, pero es cosa de chinos.

http://stackoverflow.com/questions/423626/get-mime-type-from-filename-in-c

1 respuesta
BLZKZ

#5 linux saca el mimetype sin saber la extensión, por consola lo puedes hacer con file([ruta_del_fichero])

Si no era así era: file ruta_del_fichero btw de una de las dos maneras sin la extensión te saca el mime

1 respuesta
skv

#6 Sin paréntesis, en bash siempre sin paréntesis

cabron

Pero vamos a ver, cualquier archivo se puede abrir como texto o como binario, hasta un .txt lo puedes abrir como binario, y un .exe como texto.... No tiene nada que ver con el contenido del archivo, si no con el tratamiento que vas a hacer (aunque obviamete según el tipo de contenido tiene más lógica un tratamiento u otro...)

Si vas a leer carácteres y líneas ASCII/UNICODE con getc, fputs (o sus variantes getwc, fputws) etc, lo tienes que abrir como texto, si lo que quieres es leer/escribir un stream de bytes con fread o fwrite entonces lo abres como binario.

3 1 respuesta
LOc0

#8 +1 y añado:

http://linux.about.com/library/cmd/blcmdl3_fopen.htm
... The mode string can also include the letter b'' either as a last character or as a character between the characters in any of the two-character strings described above. This is strictly for compatibility with ANSI X3.159-1989 (ANSI C'') and has no effect; the "b" is ignored on all POSIX conforming systems, including Linux. (Other systems may treat text files and binary files differently, and adding the ``b'' may be a good idea if you do I/O to a binary file and expect that your program may be ported to non-Unix environments.)...

Salu2 ;)

1

Usuarios habituales

  • LOc0
  • skv
  • BLZKZ
  • JuAn4k4
  • Ulmo
  • elkaoD
  • Soki_fucker