Big problem vite...

defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004 - 6 oct. 2002 à 15:51
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 - 6 oct. 2002 à 22:33
voila jutilise une chaine dans l'instruction "lister" ou sinscrit l'adresse du repertoire mais cela ne marche pas pourquoi?????

blabla

void lister(LPCTSTR file);

void main(int argc, char *argv[]) //pour l'adresse du repertoire

{


lister(argv[0]);
system("PAUSE");
}

blblblaaa

\->Bye Defkrie !?!

6 réponses

defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
6 oct. 2002 à 17:10
jai trouver le problem il faut juste que qunlqun me dise comment recuperer dans une chaine le repertoire (et nom pas l'adresse) ou s'ecute un programme ou effacer de maniere le plus simple les 9 derniers cararcteres dune chaine....
\->Bye Defkrie !?!
0
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
6 oct. 2002 à 17:55
salut,

tu parcours ta chaine de caractère tout en memorisant la position du dernier "/". Ensuite tu copies le contenu voulu dans une nouvelle chaine.

int pos = 0;
char *chaine2;

for(i=0; i<strlen(chaine1); ++i)
{
if(chaine1[i] == "/")
pos = i;
}

chaine2 = malloc(pos+1);

strncpy(chaine2, chaine1, pos);
chaine2[pos+1] = "\0";

et quand tu n'as plus besoin de chaine2, tu libere la memoire avec
free(chaine2);

voila.

PS : tu as plus de chance d'avoir des reponses sur le forum que dans les BAL.
0
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
6 oct. 2002 à 20:13
Pas mal en effet moi je comptais le nombre de charactere et j'effaçais un par un en reculer à chaque fois. Mais devc++ refuse de compiler ta source (erreur "ainsi" dans les "=" je crois) et moi le mien ne marcha pas non plus. Avis a tous le monde voici le challenge du jour :

void lister(LPCTSTR file);

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

//pour l'adresse du repertoire de type "c://prog.exe"

{
//but du jeu effacer prog.exe de la chaine
//le plus simplement ou trouver un moyen de juste avoir le repertoire.

lister(argv[0]);
system("PAUSE");
}

blblblaaa
0
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
6 oct. 2002 à 20:54
pourtant ca marche

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

void lister(const char *chemin);

int main (int argc, char *argv[])
{
printf("EXE : %s\n", argv[0]);
lister(argv[0]);

system("PAUSE");

return EXIT_SUCCESS;
}

void lister(const char *chemin)
{
char *rep;
int i;
int pos = 0;

for(i=0; i<strlen(chemin); ++i)
{
if(chemin[i] == '\\')
pos = i;
}

rep = malloc(pos+1);
strncpy(rep, chemin, pos);

rep[pos] = '\0';

printf("REP : %s\n", rep);
}
0

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

Posez votre question
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
6 oct. 2002 à 21:48
et non erreur lors de la compilation sous dev c++
rep = malloc(pos+1); // ansi c++ forbids implicit conversion from "void" in assignment...
0
jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
6 oct. 2002 à 22:33
donc la deux solutions possibles :
- tu as vraiment besoin du c++ :
remplaces rep = malloc(pos+1);
par : rep = new(char[pos+1]);
- tu n'as pas besoin du c++ :
renome ton fichier nom.cpp en nom.c
0
Rejoignez-nous