écrire plus d'octet qu'une string....

Résolu
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011 - 17 sept. 2005 à 17:43
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 18 sept. 2005 à 19:11
Bonjour, le titre n'est pas très clair donc je vais vous expliquer en détail :

Je transcrit un code C++ en PHP (du moins un code ayant le même but). Seulement il doit me manquer une fonction.

En C++, j'écris ma string dans un fichier comme ci :

fwrite(File,maString,1,sizeof(maString));

avec sizeof(maString) en paramètre j'écris autant d'octet que ma
variable en prend même si la chaine à l'intérieur n'occupe pas tout.

Et donc je cherche une fonction qui pourrait faire ça ou une astuce ?!

6 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 11:58
Salut,



pour combler une chaine, il existe cette superbe fonction :

str_pad




(PHP 4 >= 4.0.1, PHP 5)

str_pad -- Complète une chaîne jusqu'à une
taille donnée




Description
string str_pad ( string input, int
pad_length [, string pad_string [, int pad_type]] )
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 18:32
Salut,



bah dans un fichier en php si tu veux faire ça faut mettre des espaces par exemple :-)



bref tu mesures la longueur de ta chaîne :



$taille=strlen($chaine);

$chaine_comble='';

if($taille<50) //mettons que tu veuilles 50 caractères au minimum

{

$combler=50-$taille; //le nombre de caractères à rajouter pour atteindre 50

$i=1;

while($i<=$combler)

{

$chaine_comble.=' ';

}

}



fputs($fp,$chaine.$chaine_comble);




je pense que ça devrait aller :-)
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
17 sept. 2005 à 18:43
Bon pour le moment mon astuce est une fonction qui rempli la chaine
avec des # à la fin pour que la chaine fasse ces 32 octets, et une
autre fonction qui transforme ces ### en espaces que je suppr avec
trim().

Donc si quelqu'un à une autre proposition/amélioration à me proposer... je suis partant.

Merci
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
17 sept. 2005 à 18:47
désolé Anthomicro, je n'avais pas vu ta réponse... il semblerais qu'on ai eu la même idée !

merci

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dark_naruto25 Messages postés 127 Date d'inscription mardi 23 août 2005 Statut Membre Dernière intervention 9 mai 2011
18 sept. 2005 à 13:28
ok merci bien
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 sept. 2005 à 19:11
ah nickel je connaissais pas ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Rejoignez-nous