Bonjour,
tout d'abords ne vous inquiétez pas, j'ai vraiment parcouru ce forum avant de poster.
Bref, voici mon problème,
j'ai un fichier de config : "services.conf"
time 13 stream tcp nowait internal
echo 7 stream udp nowait internal
tftp 69 dgram udp wait /usr/sbin/tcpd in.tftpd
pop-3 110 stream tcp nowait /usr/sbin/tcpd ipop3 -l -gt
que je dois scanner pour récupérer ça dans des variables
voici mon code :
Alors mon problème :
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 #include <stdio.h> #include <stdlib.h> int main (){ FILE* fichier_conf ; int nb=0; int port; char nom[20]; char tcp[4]; char protocol[7]; char wait[11]; char cheminServeur[30]; char argumentsServeur[30]; if ((fichier_conf = fopen ("services.conf", "r"))== NULL) perror("fichier inexistant"); while (fscanf(fichier_conf, "%s%d%s%s%s%s%[^\n]", nom, &port, tcp, protocol, wait, cheminServeur, argumentsServeur)!=EOF){ printf ("%s %d %s %s %s ---|%s|--- ---|%s|--- \n", nom, port, tcp, protocol, wait, cheminServeur, argumentsServeur); nb++; } fclose (fichier_conf); exit(EXIT_SUCCESS); }
le dernier argument : <argumentsServeur> pose problème car je dois récupérer les espaces avec
quelle serait l'expression régulière pour ça ?
car celle là me renvoit :
pop-3 28001 stream tcp nowait ---|/usr/sbin/tcpd|--- ---| ipop3 -l -gt|---
pour la dernière ligne par exemple, bref l'espace reste dans l'argument et ça m'embête.
Ensuite,
je pense avoir de gros problème de gestion de mémoire car :
-si je change le int port; au tout début et que je le mets après tous les char par exemple,
mon programme boucle indéfiniment ou fait des erreurs de segmentation selon comment j'organise les déclarations ...
J'ai aussi des problème de chevauchement de données dans mes variables de mon fichiers original qui utilise des strcpy pour remplir des champs de structures.
Bref des soucis mémoires que je ne sais pas régler
Si quelqu'un connait bien le principe de fonctionnement de fscanf je serais preneur de quelques conseils
et si quelqu'un maitrise les ER pour me choper ce dernier champs ça m'arrangerait aussi
Voilà, merci d'avance à vous
Partager