Bonjour à tous,
Voudriez-vous me dire comment appeler strlcat?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char * x = "Hello, w."; char x1 [16]= "Hello, world."; strlcat (x1, x+2, 2); printf("%s\n", x1);
JPD
Bonjour à tous,
Voudriez-vous me dire comment appeler strlcat?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char * x = "Hello, w."; char x1 [16]= "Hello, world."; strlcat (x1, x+2, 2); printf("%s\n", x1);
JPD
Je ne suis pas sûr de comprendre ce que tu veux faire.
L'aide de strlcat est ici (entre autre)
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
[CODE]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char * x = "Hello, word."; char x1 [14]= "Hello, world."; int i = strlcat (x1, x+7, 19); printf("%d -%s-\n", i, x1);
18 -Hello, world.word.-
CODE]
Ça s'appelle comme ça?
JPD
J'essaie de comprendre strlcat.
J'ai un problème de malloc avec le Ä en trop au début
J'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main(void) { char x []= "Hello, world."; char *r = malloc(30 * sizeof(x)); strlcat (r, x, 9); strlcat (r , x+7, 15); for(; *r != '\0'; r++) printf("%c-", *r); printf("\n"); return 0; }
Ä-H-e-l-l-o-,- -w-o-r-l-d-.-
r et x doivent être des chaînes de caractères C, c'est à dire terminées par un '\0'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char *r = malloc(30 * sizeof(x)); strlcat (r, x, 9);
C'est le cas de x.
Pour r, le buffer contient n'importe quoi mais la fonction va chercher un '\0' dedans et finir par en trouver un (ou ça va planter). Elle ajoutera les caractères derriere ce qui donnera un début de chaîne erronné.
C'est la même chose pour strcat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char *r = malloc(30 * sizeof(x)); *r = '\0'; strlcat (r, x, 9);
De plus, c'est pas bon du tout de modifier la valeur d'un pointeur qui stocke l'adresse renvoyée par malloc. Car cette valeur doit, plus tard, être utilisée pour libérer la mémoire allouée, en utilisant free.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for(; *r != '\0'; r++)
EDIT :
sizeof(x) correspond à la taille du tableau et non pas d'un seul char.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char x []= "Hello, world."; char *r = malloc(30 * sizeof(x));
Il faut remplacer la ligne par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *r = malloc(30 * sizeof(*r));
Partager