[C] TDC3 strCat

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [C] TDC3 strCat

Message  Jokosar le Dim 18 Oct 2009, 18:37

Salut a tous,

Alors j'ai un petit soucis avec le TDC3 et plus précisement pour la fonction strCat.

C'est au niveau de l'appel de la methode : (Petit rappel, strCat concatene deux chaines)

Alors c'est au niveau d'alloué (malloc) a un char *

j'ai essayé plusieurs façons, mais ca écrase toujours la valeur de ma chaine initial.

char *str = (char *) malloc(50*sizeof(char) );
*str= "Hello";

J'ai aussi essayer avec le realloc, mais ca écrasait toujours autant Wink

Donc si qqun aurait une solution , ou une piste je suis preneur

Merci d'avance


ps: (qqun aurait le TDC4 ? )


Dernière édition par Jokosar le Mer 21 Oct 2009, 22:17, édité 1 fois

Jokosar

Nombre de messages : 72
Localisation : au 202 ...
Date d'inscription : 29/05/2007

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  nvs le Dim 18 Oct 2009, 19:20

je ne comprends pas le lien entre strcat et malloc. strcat, à l'instar de toutes les fonctions de manipulation de chaînes de caractères, ne réalise aucune allocation de mémoire. note qu'avec le protoype :
Code:
char * strcat(char * destination, const char * source);
c'est, tout compte fait, évident. mais peut-être pas quand on n'a pas l'habitude Wink on aurait pu espérer une allocation dynamique avec :
Code:
char * strcat_alloc(char * * adDestination, const char * source);

pour ce qui concerne le td4, patience jusqu'à jeudi (22/10) Smile







_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  Jokosar le Dim 18 Oct 2009, 19:47

Hum, et bien c'est juste que si je fais mon appel de la maniere suivante :

const char * source = "world";
strCat("Hello",source);

Ca ne fonctionne pas.

Jokosar

Nombre de messages : 72
Localisation : au 202 ...
Date d'inscription : 29/05/2007

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  nvs le Dim 18 Oct 2009, 20:06

la destination doit être dans une zone mémoire modifiable (on doit pouvoir y écrire) et être suffisamment grande. aucune de ces deux conditions ne sont remplies dans ton appel.








_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  Jokosar le Dim 18 Oct 2009, 20:21

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

Je crois que je vois comment j'aurais du faire Wink


Ceci aurait été correcte non :

char *dest : "Hello (avec X ' ' )"
strCat (dest, str); ??


J'édite, on avait aussi trouvé cette solution avec monsieur Beleho :

char dest[100] = "Hello";

Mais bon apparament on pouvait utilisé le malloc ... :p mais apparament non

Jokosar

Nombre de messages : 72
Localisation : au 202 ...
Date d'inscription : 29/05/2007

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  nvs le Dim 18 Oct 2009, 21:15

le coup du tableau est ok : il vit sur la pile où tu peux écrire. tu peux aussi t'en tirer avec un malloc, c'est vrai : tu te retrouves alors avec une zone sur le tas, où tu peux écrire. par contre, avec un pointeur vers une chaîne littérale, gros soucis : elle est dans le segment de donnée et avec mingw dans une zone où tu ne peux pas écrire. le problème que tu évoques illustre le différence fondamentale entre les déclarations suivantes, qui toutes ont lieu dans un bloc (pas de déclaration de variable globale) :
Code:
void f(void)
{
    char * ptr = "hello"; /* ptr pointe dans le segment de donnée et où on ne peut écrire (avec mingw) */
    char tab [] = "hello"; /* tab est un tableau local, sur la pile */
    char * ptrd = malloc(strlen("hello")+1); /* ptrd pointe vers une zone du tas */
    strcpy(ptrd,"hello");
    ...
}
évidemment, ici, pas question de concaténer ensuite : taille insuffisante Sad







_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: [C] TDC3 strCat

Message  Contenu sponsorisé Aujourd'hui à 15:18


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum