Forum Clubic

Écrire un nombre de caractere limité puis retourner a la ligne

bonjour à vous tous , je récupère une chaine de caractére dans un tableau et je veux l’écrire dans un fichier le problem c’est pour les ecrire j’ai un nombre de caractére limité a 100 puis je doit retourner à la ligne et terminer le contenu de la phrase et puis si j arrive a 100 une autre fois je retourne a ligne jusqu’à ce que je termine ma chaine contenu dans le tableau

si quelqu un connait une fonction ou comment y faire ca me serait d’une grande aide et merci d’avance.

je dirai grossièrement que c’est un substring récursif :smiley:

du pseudo code :

chaine = getChaine();
ouvrir(Fichier , "resultat.txt")

tant que taille(chaine) > 100
  chaine_tmp = substr(chaine , 1 , 100)
  ecrire(Fichier , chaine_tmp)
  chaine = substr( chaine , 101 , taille(chaine) )
fin tant que
ecrire(Fichier , chaine_tmp)  //dernier maillon
fermer(Fichier)

il y a une autre façon qui me vient à l’esprit : l’utilisation d’un index, cad que cette variable contiendra la position du dernier caractère à écrire dans le fichier

tant que index < taille(chaine)
  ecrire(Fichier , substr( chaine , index , index + 100 < taille(chaine) ? index + 100 : taille(chaine) )
  index =+ 100
fin tant que
ecrire( Fichier , substr(chaine , index , taille(chaine))
...

enfin ça reste dans l’idée, faut tester :wink:

bonsoir le premier code n’est pas dinamique donc vous traitez juste 2 ligne pour moi ca pourrai etre 1000 caractére donc 10 ligne pour le dexieme code je comprond rien dans la fonction substr vous lui donnez beaucoup d’argument vous pouvez plus présicer svp ??

c’est du pseudo code.
et pour le dynamisme, il y a le ‘tant que’
ça donne une idée de l’algo à mettre en place, c’est tout.

et pour le substr, c’est une fonction qui permet de découper une chaine de caractère, à voir comment l’utiliser en focntion des langages. Là j’ai pris l’exemple où on envoie à la fonction en premier la chaine suivie du numéro de caractère de départ pour la découpe et finie par le numéro de caractère de fin de découpe.

comme je ne sais pas dans quel langage tu compte développer, je ne pourrais pas t’aider plus.

ah oui j ai essaier tes code c pour ca que j’ai dis c’est pas dynamic car dans le 1ere tu utilise 2 substr donc comme tu utilise 2 itération je developpe en perl désolé je l’ai pas mentionné.

Pour bien saisir, en dehors de toute considération perl/etc, tu veux écrire une chaine 100 caractères par 100 dans un fichier, et ajouter un saut de ligne entre chaque bloc de 100 caractères ?

Si ça vient d’une chaine, une solution itérative comme ce que propose Jiheme44 fonctionnera, genre:

$s = '...';
for ($i = 0, $n = strlen($s); $i < $n; $i += 100) {
  $ss = substr($s, $i, 100); // 100 caractères
  echo $ss, "\n";
}

ça, c’est plus pour du php - et pour écrire sur la sortie standard - mais vu que php a repompé perl sur certains trucs, ça ne devrait pas être trop éloigné.