Aller au contenu

écrire une dernière ligne dans un fichier texte sans retour chariot


dimi3
Aller à la solution Solutionné par captain_torche,

Sujets conseillés

Bonjour,



L'écriture dans un fichier texte par la fonction fputs() crée un retour chariot après la dernière ligne, ce qui crée une ligne vide inutile.


J'ai tenté de passer par la création d'un tableau, mais je ne réussis pas à éviter l'ajout de cette dernière ligne vide.



Comment faire ?



Je vous remercie.


Lien vers le commentaire
Partager sur d’autres sites

fputs() et fwrite() ne rajoutent pas de retour chariot... tu es certain que ce n'est pas la chaîne de caractère que tu écris qui en contient un ?

Un simple code montre bien cela :

<?php$fp=fopen("file.txt", "w");fputs($fp, "hello");fclose($fp);?>

# od -c file.txt0000000   h   e   l   l   o0000005

le fichier fait bien exactement 5 caractères.



Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse.



Afin de corriger un fichier contenant une dernière ligne vide et contenant quelques erreurs de frappe, je lis ce fichier ligne par ligne par un fgets(), pour remplir dans la foulée un fichier corrigé par un fputs() . Je ne parviens pas à empêcher la copie de la ligne vide en faisant une copie du premier fichier en réduisant la boucle de 1. C'est pourquoi, j'en ai conclu que c'est le fputs() qui me crée cette ligne inutile. D'après ton message, ce n'est donc pas le cas. Mais qui crée cette ligne vide ? Je n'inclus pas de \n dans mes fputs().


Lien vers le commentaire
Partager sur d’autres sites

C'était bien ça...



Pour supprimer le retour chariot, je fais :






$lines = file($fichier1);
$n = count($lines);


$fica = fopen($fichier1, "r");
$ficc = fopen($fichier2, "w");


for($f = 0; $f < $n; $f++)
{
$ligne = fgets($fica,4096);
if( $f == $n-1)
{
$longueur = strlen($ligne);
$ligne = substr($ligne,0,$longueur-1);
fputs($ficc, $ligne);
}
else
{
fputs($ficc, $ligne);
}




Ca marche. Voyez-vous quelque chose de plus intelligent ou efficace ?

Modifié par dimi3
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...