Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2013, à 17:17

kboo

C/C++: char: ajouter des '\0'

Bonjour,
Je cherche un moyen d'ajouter des '\0' à la fin d'une chaîne de caractères:
j'ai un bibliothèque qui ne fonctionne pas correctement si on ne lui donne pas le bon nombre de caractère \0 inclu:
à la main si j'ai

char tab[] = "toto";

et qu'il faut 6 caractères je dois faire à la main:

char tab[] = "toto\0";

J'en ajoute un car il y a déjà un \0 inclu dans une chaîne.
Comment faire une fonction qui ajoute les \0 sachant que je me trouve bloqué avec strcat qui n'a pas l'air de prendre en compte les caractères après le premier \0
je sèche :-(

Merci d'avance

Dernière modification par kboo (Le 14/02/2013, à 17:46)

Hors ligne

#2 Le 14/02/2013, à 17:59

pingouinux

Re : C/C++: char: ajouter des '\0'

Et en faisant ceci ?

char tab[6]="toto";

Hors ligne

#3 Le 14/02/2013, à 18:22

kboo

Re : C/C++: char: ajouter des '\0'

pingouinux a écrit :

Et en faisant ceci ?

char tab[6]="toto";

Snif pas du tout car ma bibli pourrie lit après le \0 de fin de chaine et va lire un truc du genre "toto\000\032" ... et si je met "toto\0\0" à la main ça marche mais je ne sais pas comment le faire automatiquement!

Hors ligne

#4 Le 14/02/2013, à 18:35

pingouinux

Re : C/C++: char: ajouter des '\0'

Une méthode lourdingue :

for(j=strlen(tab);j<lmax;++j) { tab[j]='\0'; }

Ajouté :
Ou bien :

lon=strlen(tab);
memset( tab+lon, '\0', lmax-lon );

Dernière modification par pingouinux (Le 14/02/2013, à 18:39)

Hors ligne

#5 Le 14/02/2013, à 18:40

Braun

Re : C/C++: char: ajouter des '\0'

Bonjour,
A priori c'est simple, tu remplis la fin de ton tableau avec des zéros.
J'aurais d'abord réagi comme pingouinux, remplir le tableau de zéros puis y placer le texte.
Si cela ne fonctionne pas, tu devrais pouvoir à l'aide de la longueur de la chaîne déterminer la pointeur ad hoc à partir duquel tu remplis.
De mémoire, je n'ai pas testé.

Hors ligne

#6 Le 14/02/2013, à 18:45

pingouinux

Re : C/C++: char: ajouter des '\0'

@Braun  #5 : C'est la solution que tu préconises que j'ai utilisée en #4

Hors ligne

#7 Le 14/02/2013, à 21:23

Braun

Re : C/C++: char: ajouter des '\0'

Bonsoir pingouinux,
J'étais au clavier quand tu publiais, mais un doute m'étreint, notre ami kboo n'aurait-i pas pu (dû?) forcer des zéros lors de la déclaration du tableau:

char tab[6]={\'0};

Pour ensuite y copier tout ce qu'il veut.

Hors ligne

#8 Le 14/02/2013, à 23:51

compte supprimé

Re : C/C++: char: ajouter des '\0'

Normalement le memset de pingouinux a le même effet, Braun.

#9 Le 15/02/2013, à 10:25

kboo

Re : C/C++: char: ajouter des '\0'

Trouvé!!! merci les amis,
Alors voici comment j'ai fait, je sais c'est bête mais ces \0 .. un vrai cauchemar par moment...

string str = "toto";
str.resize(6);

et ça marche !!! si si! je n'y croyais pas! smile

Hors ligne

#10 Le 15/02/2013, à 10:57

claudius01

Re : C/C++: char: ajouter des '\0'

Bonjour,

kboo a écrit :

et ça marche !!! si si! je n'y croyais pas! :-)

... conformément à  C++/string


Cordialement, A+
--
Claudius

Hors ligne