Bonjour
J'ai un soucis ! J'ai une chaine (un chemin d'acces, en realité) et j'aimerais en extraire un nom de Process que la chaine contient. Lorsque j'utilise le code ci-dessous, l'extraction se fait bien mais il y a un "." (signe qui devient è@ sous un editeur quelconque) à la fin du nom !?! Je suppose que cela vient d'un probleme de pointeur ?
Quelqu'un peut-il m'aider sur le suejt merci !! ??
resultat du 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 char *Dir; char *MonProcess; Dir=malloc(sizeof(char)*strlen(argv[1])); // argv[1] est du type /mnt/hda5/Monchemin/NomDuProcess/NomDuProcess (ou NomDuProcess est un exe En C et aussi, le repertoire ou il doit se loger). MonProcess=(char*)malloc(sizeof(char)*100); strcpy(Dir,argv[1]); int StartProcessName=strlen(Dir)-12; int EndProcessName=strlen(Dir)-1; MonProcess=str_sub(Dir,StartProcessName,EndProcessName); // routine str_sub : /** Fonction str_sub : ------------------ Goal : This function allows a string to be extracted from another with starting and ending indexes -------------------------------------------------------------------------------------------------- inputs : const char* s --> target string to extract from unsigned int start --> starting index unsigned int end --> ending index outputs: char* --> the result of extraction */ char *str_sub (const char *s, unsigned int start, unsigned int end) { char *new_s = NULL; if (s != NULL && start < end) { new_s = malloc (sizeof (*new_s) * (end - start + 2)); if (new_s != NULL) { int i; for (i = start; i <= end; i++) { new_s[i-start] = s[i]; } } else { fprintf (stderr, "Memoire insuffisante\n"); exit (EXIT_FAILURE); } } return new_s; }
Comment faire pour recuperer "NomDeProcess" proprement en C ? (sachant qu'il a toujours la meme taille =12) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ARGV1=/mnt/hda5/Local/Travail/VALIDATIONS/TESTS/SimCATDSProc/C1C___00_01/C1C___00_01 MonProcess=C1C___00_01� // Il y a comme une sorte de "," a la fin qui doit venir d'un \0 j'imagine ?!
Merci de m'aider !
pepito
Partager