Problème de slash

pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 20 mars 2006 à 19:21
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010 - 27 mars 2006 à 17:19
Bonjour!
J'ai un problème avec un slash et un strcat :

strcpy(ligne,argv[1]);
strcat(ligne,"/fichier.txt");

Quand je lance mon programme, j'ai l'erreur segmentation fault.
J'ai trouvé que cela venait du / dans le strcat.
Comment faire?
Merci de votre réponse.
A bientôt.

24 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 mars 2006 à 20:44
et la déclaration de ligne ?

et tu veux faire quoi en gros ?
if(!Meilleur("Joky")) return ERREUR;<
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
20 mars 2006 à 21:36
En fait, je crée un programme C sous Linux. Une fois compilé, l'utilisateur passe un paramètre à mon programme. Ce paramètre correspond à un dossier.
Lorsque je veux concaténer moi même le paramètre et "/fichier.txt", c'est là que j'ai l'erreur "Segmentation fault".
Voilà, tu sais tout.
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 mars 2006 à 22:24
Non, je sais pas comment tu as déclaré ligne
Et pour un chemin j'aurai plutot utilisé l'anti slach
en sachant qu'en C un anti Slach s'écrit '[file://'/ \\']


if(!Meilleur("Joky")) return ERREUR;<
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
20 mars 2006 à 23:07
sous linux un '\\', ca donnerait pas grand chose il me semble;

chemin linux :

/var/usr/bin

chemin windows:

c:\programfiles\program\fichier

je vais peut etre passer pour un cave mais bon, c ' est juste pour jOkY

Sinon, ben écoute joky, donne la déclaration de ligne !



@+;
satellite34

http://rootscommunity.free.fr
0

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

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
21 mars 2006 à 00:57
Ah ok lol, linux et moi tu sais lol, j'suis dans le classissisme windowsiens :)

if(!Meilleur("Joky")) return ERREUR;<
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
21 mars 2006 à 08:05
Vous voyez vraiment pas?
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
21 mars 2006 à 08:43
ben tu nous donne rien a voir donc forcément on voit rien !



@+;
satellite34

http://rootscommunity.free.fr
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
21 mars 2006 à 10:41
Ce que les autres veulent te dire c'est que tu n'as peut-être pas alloué assez de mémoire pour "ligne"..

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
21 mars 2006 à 14:09
char ligne[255]
strcpy(ligne,argv[1]);
strcat(ligne,"/fichier.txt");

devrait passer.

au pire, check le en débug ou avec une fonction de trace
(notemment apres le strcpy)
___________________________________________________________
Magicalement
Nono
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
21 mars 2006 à 14:13
bonjour,

magic_nono :

pourquoi tu met 255,??
ca a un rapport avec le systeme d'exploitation( taille de nom de fichier maxi ou autre )??

ou bien c'est juste une supposition? ( tu suppose que le nom du fichier ne fera jamais + de 255 chars --> ce qui est sûr )

@+;
satellite34

http://rootscommunity.free.fr
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
21 mars 2006 à 20:12
Allo, allo, monsieur nono???

tu m' snobes ou quoi???

Ma question est peut etre débile mais elle mérite d' avoir une réponse je pense;
@+;
satellite34

http://rootscommunity.free.fr
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
21 mars 2006 à 20:40
Il peut peut être pas encore répondre. Faut attendre demain peut être.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
22 mars 2006 à 09:13
Si je peux me permettre, je vais répondre pour Magic_Nono:
- il a mis 255 comme il aurait pu mettre 12 ou 65
- la longueur max d'un chemin de fichier est en effet de 255 caractères

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
22 mars 2006 à 09:32
Merci Bruno

oui, j'étais en réu l'am et ce soir, je n'avais pas de connexion

en effet, j'ai mis 255
car
c'est la longueur max d'un chemin de fichier.

(sous windows)

et du moins historiquement,
je ne sais pas si sous xp on peut exploser cette limite...

___________________________________________________________
Magicalement
Nono
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
22 mars 2006 à 09:38
sinon, j'utilise une variable d'environnement:

TCHAR szFullInfFName[_MAX_PATH];

définie dans stdlib.h

/*
* Sizes for buffers used by the _makepath() and _splitpath() functions.
* note that the sizes include space for 0-terminator
*/
#ifndef _MAC
#define _MAX_PATH 260 /* max. length of full pathname */
#define _MAX_DRIVE 3 /* max. length of drive component */
#define _MAX_DIR 256 /* max. length of path component */
#define _MAX_FNAME 256 /* max. length of file name component */
#define _MAX_EXT 256 /* max. length of extension component */
#else /* def _MAC */
#define _MAX_PATH 256 /* max. length of full pathname */
#define _MAX_DIR 32 /* max. length of path component */
#define _MAX_FNAME 64 /* max. length of file name component */
#endif /* _MAC */

donc là, en effet, elle vaut un poil plus que 256,
certaienement pour le "c:" du départ...
___________________________________________________________
Magicalement
Nono
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
22 mars 2006 à 11:23
bonjour;

héhé, merci bien les gars, désolé d'avoir été pressé....
Mais je dois dire qu'hier j' tais un peu nerveux;

;

allé, merci encor' et a plus tard;

satellite34

http://rootscommunity.com

http://rootscommunity.free.fr/
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
23 mars 2006 à 23:22
Sinon, pour mon problème voilà ce que j'ai tapé :


#include <stdio.h>


#include <stdlib.h>


#include <string.h>


int main(int argc, char *argv[])


{


char texteRecherche[255];


char cheminArborescence[255];


if(argv[1]==NULL || argv[2]==NULL)


{


printf("Usage: ListerDossier CHEMIN_FICHIER_ARBORESCENCE FICHIER_RECHERCHE\n");


}


else


{


strcpy(cheminArborescence,argv[1]);


strcat(cheminArborescence,"/arborescence.txt");


strcpy(texteRecherche,argv[2]);


}


}

Essayez et dites moi ce qui ne va pas. Merci!!!
Indice : le problème du "/" à la ligne strcat(cheminArborescence,"/arborescence.txt");
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
24 mars 2006 à 17:09
"\" éventuellt
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
25 mars 2006 à 13:55
Sous linux on peut pas utiliser les \ pour l'arborescence, non?
Je vais quand même essayer
0
pcmanprogrammeur Messages postés 126 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 16 octobre 2010
25 mars 2006 à 14:37
En effet, je viens de tester et \\ ne marche pas.
J'ai donc essayé "\/" mais c'est pareil :(

Personne ne veut tester mon code pour voir?
0
Rejoignez-nous