2011-08-16 10 views
5

¿Alguien me puede decir la diferencia entre ASCII English Text y ASCII C Program Text files. He estado escribiendo un pequeño programa y cuando uso el comando 'archivo' de Linux en uno de los archivos, lo describe como texto en inglés ASCII, mientras que todos los demás archivos se describen como texto de programa ASCII C. El programa compila pero obtengo resultados extraños. Esto podría no estar relacionado pero no puedo evitar pensar que esto está causando el problema.ASCII English Text/ASCII C Program Pregunta de texto

¿Cuál es la diferencia entre estos archivos? ¿Por qué compila el archivo y podría causar problemas? Finalmente, ¿cómo puedo convertir el texto en inglés ASCII en texto del programa ASCII C?

Gracias!

+0

Pruebe cat myEnglishTextFile> aNewFile.c y cuéntenos cuál es el nuevo tipo: D – Kheldar

+0

¿Está hablando de archivos fuente, donde algunos son texto en inglés ASCII, mientras que otros son texto del programa ASCII C? –

+0

Kheldar - la descripción del archivo sigue siendo la misma. – JohnB

Respuesta

6

No hay 'número mágico' en los archivos de código fuente C, por lo que la utilidad file solo puede usar heurística (como 'si contiene' #include < 'en las primeras líneas) para adivinar que es' C ' archivo. Si el archivo no coincide con ninguna de las heurísticas, pero contiene algunas palabras en inglés, la utilidad file puede adivinar incorrectamente. Nada de que preocuparse. Se supone que el código C se compila y ejecuta bien, no está escrito solo para ser identificado por file.

+0

Excelente, ese es exactamente el problema. Eliminé un comentario en la parte superior del código para que #include fuera lo primero que apareciera en el archivo y el tipo de archivo cambiado. ¡Gracias! – JohnB

-1

Creo que malinterpretaste el significado de lo que significa esta descripción.
ASCII es el estándar sobre cómo almacenar texto (UTF8 o UTF16 son otros estándares para su referencia, pero su coexiste con ASCII).

Lo file está tratando de decir, es:

  • ASCII Inglés Texto - archivo de texto plano, texto almacenado en formato ASCII
  • ASCII C el texto del programa - detecta sintaxis del programa C, almacenado de texto en formato ASCII

lo más probable es ASCII C el texto del programa se compilará a cabo o f el cuadro, mientras que ASCII English Text no, ya que esto debería ser solo un texto normal (como readme.txt, por ejemplo). Por otro lado, la utilidad file simplemente adivinando su tipo de archivo, y la adivinación de archivos de texto puede no ser precisa en todos los casos, ya que no hay un número mágico (como, por ejemplo, en GIF binario, o PNG, o muchos otros tipos de archivos) . Por lo tanto, no debe confiar en el file, su único propósito es referencia.

Si tiene ASCII, texto en inglés escribe para que los archivos de programa c sean perfectamente correctos, entonces es muy probable que haya algunos problemas con los finales de línea. Intente ejecutar fromdos en estos archivos, debería convertir las terminaciones de línea CRLF estilo Windows a LF, estilo Linux.

+0

Ok, entonces ¿por qué un archivo con un sufijo .c piensa que es un archivo de texto en inglés ASCII? – JohnB

+0

Compruebe la respuesta actualizada. Quizás las terminaciones de línea no sean de estilo Linux. –