Strcat() ????

cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010 - 13 oct. 2003 à 10:12
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010 - 13 oct. 2003 à 17:03
Salut tout le monde, jai un petit probleme avec la fonction strcat() , je commence a peine un programme que deja je bloque la dessus jaimerai de l'aide silvousplais.
Voici le programme en question:

#include <windows.h>
#include <stdio.h>
#include <string.h>

int FindFiles(char direc[255])
{

strcat(direc,"*");
return 0;
}

int main()
{

FindFiles("c:/");
return 0;
}

normalement ca devrai faire "c:/*" mais une erreur se produit lors de lappel de la fonction strcat();

Merci d'avance pour votre aide

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2003 à 10:35
Normal, tu lui passes une constante. On ne chaine RIEN sur une constante.
Mets cela dans un buffer et passe l'adresse de ton buffer.

int FindFiles(char *direc)
{
strcat(direc,"*");
return 0;
}

int main()
{
char buff[256];
strcpy(buff, "c:\");
FindFiles(buff);
return 0;
}

BruNews, ciao...
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
13 oct. 2003 à 10:43
Bon c'est un peu compliqué c'est une histoire de pointeurs.

Mais avant je ne comprends pas bien ce que tu veux faire. Si tu veux ajouter * à ta chaine de caractère, il faut que "c:/" soit dans une variable : tu ne peux pas modifier une constante:

int FindFiles(char* direc)
{

strcat(direc,"*");
return 0;
}

int main()
{
char str[255]="c:/";
FindFiles(str);
return 0;
}

Si c'est pour faire un traitement dans FindFiles, tu dois faire une copie de direc et travailler avec la copie :

int FindFiles(char* direc)
{
// copie le contenu de direc dans cpy_direc
char* cpy_direc;
strcpy(cpy_direc, direc);

// ajoute * à cpy_direc
strcat(cpy_direc,"*");

return 0;
}

Voila
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 oct. 2003 à 10:49
ohe garslouche,
char* cpy_direc;
strcpy(cpy_direc, direc);
OU VAS-TU AVEC CELA ???
cpy_direc ne pointe sur rien, c'est tout droit vers l'exception memoire !!!
BruNews, ciao...
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
13 oct. 2003 à 16:22
OK, autant pour moi :
il faut remplacer
char* cpy_direc

par
char cpy_dirc[255]

sorry
0

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

Posez votre question
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010
13 oct. 2003 à 17:01
OK merci beaucoup tout baigne!
0
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010
13 oct. 2003 à 17:03
Puis si vous avez un moment:
Rencontre dialogue chat annonce photo sur www.Datzy.com le site de rencontre sur internet gratuit...
0
Rejoignez-nous