Problème de slash

Signaler
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010
-
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010
-
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

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

et tu veux faire quoi en gros ?
if(!Meilleur("Joky")) return ERREUR;<
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

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.
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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;<
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ah ok lol, linux et moi tu sais lol, j'suis dans le classissisme windowsiens :)

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

Vous voyez vraiment pas?
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
ben tu nous donne rien a voir donc forcément on voit rien !



@+;
satellite34

http://rootscommunity.free.fr
Messages postés
15136
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
99
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
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
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
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
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
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

Il peut peut être pas encore répondre. Faut attendre demain peut être.
Messages postés
15136
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
99
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
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
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/
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

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");
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
"\" éventuellt
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

Sous linux on peut pas utiliser les \ pour l'arborescence, non?
Je vais quand même essayer
Messages postés
126
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
16 octobre 2010

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?