Pointeur et strcat

ayarikhaoula Messages postés 126 Date d'inscription vendredi 13 août 2010 Statut Membre Dernière intervention 15 août 2011 - 7 avril 2011 à 10:58
ayarikhaoula Messages postés 126 Date d'inscription vendredi 13 août 2010 Statut Membre Dernière intervention 15 août 2011 - 7 avril 2011 à 15:58
salut tout le monde
je veux développer une fonction en c qui stocke un chemin d'une dossier spécial dans une chaine de carratcère.
je veuxsavoir comment manipuler les pointeurs au lieu d'utiliser les chaine de carractère:



int ma_fonction()
{
char *ch1;
TCHAR *ch2;
if(FAILED(SHGetFolderPath(NULL,CSIDL_APPDATA|CSIDL_FLAG_CREATE,NULL, 0, szPath)))
{printf("erreur");}
strcat( ch1,ch2)
return(1)
}

merci pour tout aide

6 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
7 avril 2011 à 12:08
Bonjour,

Ton code n'a aucune chance de marcher, ch1 et ch2 ne sont pas alloués.

Il faut commencer par allouer de la mémoire avant de mettre quelque chose dedans.

char *ch1 = (char *)malloc(256);

Et bien sûr, la libérer lorsque tu n'en as plus besoin :

free(ch1);

De plus, je ne vois pas bien ce que fait ta fonction, elle concatène ch1 et ch2 alors qu'on ne sait pas ce que contiennent ces variables.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 avril 2011 à 14:47
salut,


tu peux aussi allouer en local si la variable n'a plus de raison d'exister après une fonction.

char buff[MAX_SIZE];
char *pC = &buff;

pC pointe alors sur le debut du buffer.

@++
0
ayarikhaoula Messages postés 126 Date d'inscription vendredi 13 août 2010 Statut Membre Dernière intervention 15 août 2011
7 avril 2011 à 14:53
j'explique mon problème:
moi je cherche a récuppérer le chemin d'un dossier spécial dont je connait pa la taile du non de ce chemin.pour cela je doit ce procédé d'une facon dynamique.
Lorsque j'ai utilisé un tableau de de taille assez grand(100) j'ai une mauvaise résultat:le chemin contient des carratères spécaux.
et lorsque j'utilise char ch[65] tou passe bien sauf que comme j'ai indiqué je sai pas si 65 suffit pour un non assé grand .
merci
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 avril 2011 à 15:10
re,

C'est plutôt:

char *pC = buff;
ou
char *pC = &buff[0];

@++
0

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

Posez votre question
ayarikhaoula Messages postés 126 Date d'inscription vendredi 13 août 2010 Statut Membre Dernière intervention 15 août 2011
7 avril 2011 à 15:23
j'ai pas compris c'est quoi buff
0
ayarikhaoula Messages postés 126 Date d'inscription vendredi 13 août 2010 Statut Membre Dernière intervention 15 août 2011
7 avril 2011 à 15:58
je teste ton code.
j'ai le msg suivant:initialisation from incompatible pointer type a ala compilation mais l'exécution passe bien
0
Rejoignez-nous