2011-08-16 8 views
5

Qualcuno può dirmi la differenza tra testo ASCII inglese e file di testo del programma ASCII C. Ho scritto un piccolo programma e quando uso il comando 'file' di Linux su uno dei file lo descrive come testo inglese ASCII mentre tutti gli altri file sono descritti come testo del programma ASCII C. Il programma si compila ma sto ottenendo strani risultati. Questo potrebbe non essere correlato, ma non posso sfuggire al pensiero che questo stia causando il problema.ASCII Testo in inglese/Testo del programma ASCII Domanda

Quindi quali sono le differenze tra questi file? Perché il file viene compilato e ciò potrebbe causare problemi? Infine, come posso convertire da ASCII English Text in ASCII C Program Text.

Grazie!

+0

Prova cat myEnglishTextFile> aNewFile.c e dicci qual è il nuovo tipo: D – Kheldar

+0

Stai parlando di file sorgente, dove alcuni sono ASCII testo inglese mentre altri sono ASCII C programma di testo? –

+0

Kheldar - la descrizione del file rimane la stessa. – JohnB

risposta

6

Non c'è un "numero magico" nei file del codice sorgente C, quindi l'utilità file può utilizzare solo alcune euristiche (come "se contiene" # include < "nelle prime righe) per indovinare che è un 'C ' file. Se il file non corrisponde a nessuna delle euristiche, ma contiene alcune parole inglesi, l'utilità file potrebbe indovinare. Nulla di cui preoccuparsi. Il codice C dovrebbe compilare ed eseguire bene, non è scritto solo per essere identificato da file.

+0

Eccellente, questo è esattamente il problema. Ho rimosso un commento nella parte superiore del codice in modo che un #include fosse la prima cosa presente nel file e il tipo di file modificato. Grazie! – JohnB

-1

Penso che abbia interpretato male il significato di ciò che significa questa descrizione.
ASCII è lo standard su come memorizzare il testo (UTF8 o UTF16 sono altri standard per il vostro riferimento, ma il loro coesistono con ASCII).

Cosa file sta cercando di dirti, è:

  • ASCII English Text - file di testo, testo memorizzato in formato ASCII
  • ASCII C testo del programma - c sintassi del programma rilevato, testo memorizzati in formato ASCII

Molto probabilmente ASCII C testo del programma compilerà fuori o f la casella, mentre ASCII testo inglese non, poiché questo dovrebbe essere solo un testo normale (ad esempio readme.txt, ad esempio). D'altra parte l'utilità file sta solo cercando di indovinare il tipo di file, e la supposizione dei file di testo potrebbe non essere precisa in tutti i casi, poiché non esiste un numero magico (come, ad esempio, in GIF binario o PNG o molti altri tipi di file) . Quindi, non dovresti affidarti allo file, il suo unico scopo è riferimento.

Se si dispone di ASCII testo inglese tipo per un file di programma c perfettamente bene, quindi molto probabilmente ci sono alcuni problemi con le terminazioni di linea. Prova a eseguire fromdos su questi file, dovrebbe convertire le terminazioni di riga CRLF in stile Windows a quelle LF, in stile Linux.

+0

Ok allora perché un file con suffisso .c pensa che sia un file di testo inglese ASCII? – JohnB

+0

Controllare la risposta aggiornata. Forse i line-end non sono in stile Linux. –