Bonjour,
N'ayant jamais utilisé les fonctions malloc et tableau dynamique et liste chainée.
J'ai un souci pour réaliser une fonction en C.
J'au un fichier in, comme ci-dessous (faisant des milliers de lignes) :
Je voudrais réaliser des compteurs dynamique, pour écrire dans un fichier out.907;A1;50455366941100; 8:54:22;;
907;A2;50592402661100; 8:54:22;;
907;A2;5026460369; 8:54:23;;
518;A1;50513426561100; 8:54:23;;
L07;A3;50652151531100; 8:54:24;;
En autorisant le comptage en colonne[0] du type 907 et 518 mais pas du type L07.
En autorisant le comptage en colonne[1] du type A1 et A2 mais pas du type A3.
Pour avoir dans un fichier out ci-dessous :
Pour éviter le coté rébarbatif.907 = 3 - Type A1 = 1 - Type A2 = 2
518 = 1 - Type A1 = 1
L07 = NON AUTORISE = 1 - Type A3 = NON AUTORISE = 1
En délarant 1000 int (suivant le type de colonne[0] - 907 518 etc...)
Fois 3 int (suivant le type de colonne[1] - A1 A2 etc...).
Ce qui alourdirait le programme en nombre de lignes de code.
Je voudrais de l'aide.
Ci après mon code source C, avec un type de compteur :
Merci de votre aide.
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 /*----*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #define MY_BUFSIZ 128 FILE *fin, *fout; char fnout[MY_BUFSIZ], l_buf[MY_BUFSIZ]; int nbr_907_auto = 0; void main(int argc,char *argv[]) { if(argc != 3) printf("manque paramètre exe fic_in fic_out\n"); if ((fin = fopen(argv[1], "r")) == NULL) printf("pb fic_in\n"); if ((fout = fopen(argv[2], "w")) == NULL) printf("pb fic_out\n"); for(;;) { memset((char *)&l_buf,0x00,MY_BUFSIZ); if(fgets((char *)&l_buf,MY_BUFSIZ,fin)==NULL) break; memset(fnout, 0x00, MY_BUFSIZ); strncpy(fnout, l_buf, 3); if(!strncmp(fnout, "907", 3)) { nbr_907_auto++; } } fprintf(fout, " client 907 : %6d\n", nbr_907_auto); exit(0); } /*----*/
Cbibi
Partager