Bonjour, je vous laisse un topic sur un truc qui m'était encore jamais arrivé.... Ma boucle for se bloque!!

D'abord, voici mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
int j=4;
	char* nom=NULL;
	char *tmp=NULL;
 
	for(i=argc-1; i>0; i--){
 
		printf("i: %d\n", i);
		if(j==4){
 
			printf("Parametre lu: %s\n", argv[i]);
 
			if(strncmp(argv[i],"/dev/",5)==0){
 
				test_parametres(&parametres[j],argv[i]);
				printf("parametre defini n°%d: %s\n", j, parametres[j]);
				j--;
				printf("j: %d\n",j);
			}
			else{
			}
 
		}
 
		else if(j==3){
 
			printf("ici");
			if(strncmp(argv[i],"/mnt/",5)==0){
 
				*tmp = realloc(nom, sizeof(char*));
 
				if(tmp!=NULL){
					strcpy(tmp,nom);
					*nom=realloc(nom, (strlen(argv[i])+strlen(tmp)+2));
 
					if(nom!=NULL){
 
						strcpy(nom,argv[i]);
						sprintf(nom,"%s%s",tmp);
						free(tmp);
						test_parametres(&parametres[j],nom);
						printf("parametre defini n°%d: %s\n", j, parametres[j]);
						j--;
						printf("j: %d\n",j);
					}
				}
 
			}
 
			else{
 
				*tmp = realloc(nom, sizeof(char*));
 
				if(tmp!=NULL){
					strcpy(tmp,nom);
					*nom=realloc(nom, (strlen(argv[i])+strlen(tmp)+2));
 
					if(nom!=NULL){
 
						strcpy(nom,argv[i]);
						sprintf(nom,"%s%s",tmp);
						printf("Construction nom: %s\n", nom);
					}
				}
 
 
			}	
 
		}
 
 
		else{
			free(nom);
			test_parametres(&parametres[j],argv[i]);
			printf("parametre defini n°%d: %s\n", j, parametres[j]);
			j--;
			printf("j: %d\n",j);
		}
 
	}
Le principe de la boucle est assez simple: j'ai un programme qui doit utiliser un certain nombre de paramètres, qui doivent être au nombre de 5. L'un des paramètres contient un point de montage sur une clé USB, dont le nom est inconnu. Comme certainbs noms ont des espaces " ", ils sont comptés en tant que paramètre dans la commande. Afin d'éviter cela, je cherche à détecter ces erreurs, et à reconstituer le bon nom.

Je passe donc les paramètres en sens inverse pour trouver:
- la caméra, dont le nom commence par /dev
- le point de montage, dont le nom commence par /mnt

Comme les paramètres sont ordonnés, je sias que si le paramètre 3 ne commence pas par /mnt, c'est qu'il y a des paramètres passés qui n'en sont pas, et je cherche à reconstituer le nom.

Le problème est le suivant:
La boucle se lance, il récupère le paramètre 4, décrémente le compteur à 3 pour trouver le point de montage.... Et au lieu de rentrer dans le cas

Pour commencer la reconstitution, la boucle s'arrete là..... Il y a un printf pour vérifier si la boucle continue, mais queneni!!
Et comme pour le moment le main ne contient que ca, la console rend la main!!

Des idées pour ce problème bizarre??

Si quelqu'un a une idée