Bonjour,

Je suis en difficulté sur un prog :
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/****************************************************************************************/
/* Contrôle l'existance des process WINWORD et PDFCreator et suppression s'ils existent */
/* La conversion d'un autre fichier sera impossible s'ils tournent toujours             */
/****************************************************************************************/
int supp_process()
{
	#define MAXNUM 10
	#define MAXNOM 20
	char espacenum[MAXNUM];
	char espacenom[MAXNOM];
	FILE *fichierps;
	char *ps;
	int no = 0;						
	int i = 0;
	int j = 0;
	int k = 0;
	int m = 0;
	int nbps = 0;
	int lg = 0;
	char *p1 = espacenom;
 
	struct entry					/* Paramètres des process à supprimer */
	{
		char num[10];
		char nom[20];
	};
	struct entry process[200];		/* Nombre de process max à supprimer */
 
	/* Lit tous les ps en cours et les copie dans liste_ps.txt */
	if (system("AINTX\\ps.exe") == 0 && system("AINTX\\ps.exe > liste_ps.txt") == 0)
	{
 
		if ((fichierps = fopen("liste_ps.txt","r")) == NULL) 
		{
			fputs("\nErreur d'ouverture du fichier liste_ps.txt\r",cr);
			return 1;
		}
		/* Allocation mémoire du pointeur de lecture du fichier temporaire */
		if ((ps = (char *)malloc(100)) == NULL)
		{
			fputs("\nIl y a un probleme d'allocation mémoire du pointeur ps",cr);
			fclose(fichierps);
			return 1;
		}
 
		/* Lit tous les process en cours */
		while (fgets(ps,100,fichierps) != NULL && !feof(fichierps))
		{
			printf("\nps : %s - %d\r",ps,strlen(ps));
 
			lg = strlen(ps);
			for (i=0;i<=lg;i++)
			{
				if (strnicmp(ps," ",1) != 0)
				{
					switch (no)
					{
						case 0 :
							/* Mémorisation du n° de process */
							process[nbps].num[j] = *ps;
							printf("\n%c\r",process[nbps].num[j]);
							j++;break;
						case 3 :
							/* Mémorisation du nom de process */
							process[nbps].nom[k] = *ps;
							k++;break;
					}
					m = 0;
				}
				else
				{
					if(m == 0)
						no++;
					m = 1;
				}
				/* Avance d'un caractère */
				*ps++;
			}
			/* Remplace le dernier caractère par \0 */
			process[nbps].num[strlen(process[nbps].num)-1] = '\0';
			process[nbps].nom[strlen(process[nbps].nom)-1] = '\0';
			/* Passe au process suivant */
			nbps++;
			j = 0;
			k = 0;
			no = 0;
 
		}
		fclose(fichierps);
		free(ps);
 
		for(i=0;i<nbps;i++)
		{
			strcpy(p1,"IEXPLORE\0");
			printf("\n%s - process[%d].nom : %d ** Process : %s - %d\r",process[i].nom,i,strlen(process[i].nom),process[i].num,strlen(process[i].num));
			if(strcmp(process[i].nom,p1) == 0)
			{
				printf("\nprocess[%d].num : %s\r",i,process[i].num);
				printf("\nprocess[%d].nom : %s\r",i,process[i].nom);
			}
		}
 
		printf("\nNombre de process : %d\r",nbps);
		fprintf(cr,"\nNombre de process : %d\r",nbps);
	}
	else
	{
		fputs("\nImpossible de lister les process.\r",cr);
		return 1;
	}
 
	return 0;
}
Losrque j'affiche le contenu de la structure "process[i].num", dans la dernière boucle for, la dernière valeur n'existe pas et à la place il existe des caractères parasites.
J'ai dû faire une erreur qqpart mais où ?

Avez-vous une idée ? Merci