Retour chariot systématique en fin de fichier

Fermé
flakix - 1 févr. 2011 à 09:02
 flakix - 1 févr. 2011 à 12:54
Bonjour,
je viens de m'apercevoir depuis peu que lorsque je crée un fichier texte sous Linux (Ubuntu) un retour chariot est ajouté systématiquement en fin de fichier:

Ex:
- j'écris (avec gedit ou vi) dans le fichier uniquement la lettre 'a'
- je sauvegarde
- lorsque je visualise le fichier (gedit ou vi), je ne vois qu'un seul caractère ('a')
- par contre, lorsque je charge le fichier dans un programme écrit en C (fopen + fgets), je réalise que le fichier contient "a\n"
- de plus, la taille du fichier est de 2 octets ('a' et '\n') alors qu'il ne devrait contenir qu'un seul.
- la seule façon de l'enlever est d'utiliser (entre autres) la commande tr -d sur '\n' (la taille passe alors à 1 octet et le contenu reste bien 'a')

Questions:
- à quoi se doit ce rajout systématique?
- est-il normal?
- y a t-il moyen de le désactiver?

Merci par avance de m'illuminer là dessus.

Flakix
Ubuntu 10
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
1 févr. 2011 à 11:16
Salut,

Pour vim, édites ton fichier ~/.vimrc (crées-le s'il n'existe pas) et ajoutes-y :

set noendofline binary

;-))
1
Merci zipe31, c'est déjà une solution!

Mais je reste sur ma faim en ce qui concerne la pertinence de ce mystérieux '\n', invisible et rajouté par défaut...
Je me demande si un paramétrage semblable/fichier de config existe dans gedit (puisqu'il s'agit de l'éditeur texte de base sous Ubuntu).

Flakix
1
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
1 févr. 2011 à 12:04
Mais je reste sur ma faim en ce qui concerne la pertinence de ce mystérieux '\n', invisible et rajouté par défaut...
Ben sous Unix c'est le caractère de "fin de ligne " (LF ou \n ). Sous Mac c'est "retour chariot" (CR ou \r) et sous Windows tu as droit à la totale "\r\n" ;-\
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
1 févr. 2011 à 12:10
Pour gedit essaie de vois dans le menu "Edition" -> "Préférences", onglet "Affichage", s'il n'y a rien qui ressemble à "désactivez le retour à la ligne"...
0
Bien sûr, le '\n' correspond à la fin de ligne/line feed/LF sous Unix et Linux. Et l'équivalent sous Windows est, comme tu le précises, '\r\n' (CR + LF).

Toujours est-il que l'on peut créer un fichier texte sous Windows sans CRLF. Mais ceci ne semble pas possible -sauf astuce vim- sous Linux qui semble rajouter un invisible '\n' juste avant le EOF. C'est juste ceci qui me perturbe...

Je vérifierai ce soir les options de gedit comme tu le dis. Merci pour ton aide.
0