A voir également:
- [C] Enlever des separateurs
- Enlever pub youtube - Accueil - Streaming
- Comment enlever une page sur word - Guide
- Enlever liste déroulante excel - Guide
- Enlever mode sécurisé samsung - Guide
- Enlever mot de passe windows 10 - Guide
2 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
Modifié par Pacorabanix le 7/04/2011 à 19:24
Modifié par Pacorabanix le 7/04/2011 à 19:24
sauf erreur, je crois que sscanf s'occupe de tout ça.
"
Whitespace character: the function will read and ignore any whitespace characters (this includes blank spaces and the newline and tab characters) which are encountered before the next non-whitespace character. This includes any quantity of whitespace characters, or none.
Non-whitespace character, except percentage signs (%): Any character that is not either a whitespace character (blank, newline or tab) or part of a format specifier (which begin with a % character) causes the function to read the next character from str, compare it to this non-whitespace character and if it matches, it is discarded and the function continues with the next character of format and str. If the character does not match, the function fails and returns."
(sur http://www.cplusplus.com/reference/cstdio/sscanf/
sinon tu as aussi strtok() pour "parser" (comme on dit dans le jargon) ta chaine en éléments séparés par ce que tu veux.
"
Whitespace character: the function will read and ignore any whitespace characters (this includes blank spaces and the newline and tab characters) which are encountered before the next non-whitespace character. This includes any quantity of whitespace characters, or none.
Non-whitespace character, except percentage signs (%): Any character that is not either a whitespace character (blank, newline or tab) or part of a format specifier (which begin with a % character) causes the function to read the next character from str, compare it to this non-whitespace character and if it matches, it is discarded and the function continues with the next character of format and str. If the character does not match, the function fails and returns."
(sur http://www.cplusplus.com/reference/cstdio/sscanf/
sinon tu as aussi strtok() pour "parser" (comme on dit dans le jargon) ta chaine en éléments séparés par ce que tu veux.
Effectivement, sscanf s'en occupait, mon erreur venait d'autre part.
Mais j'aurais encore besoin d'aide.
Voilà le morceau de code qui coince. La fonction sscanf recupere bien tous les elements et me les met dans mes variables. Mais lorsque je veux remplier le champ "user" de ma structure, il me met une erreur de segmentation...
Ma structure ressemble à ca :
et je ne vois pas d'où ca peut venir.
Mais j'aurais encore besoin d'aide.
PROCESS *pProc; pProc = (PROCESS *)malloc(sizeof(PROCESS)); char stime[LONG],tty[LONG],time[LONG], pUser[LONG], pNomCommande[LONG], ligne[LONG]; int pid,ppid,c; ... fgets(ligne,LONG,fp) while (fgets(ligne,LONG,fp) != 0){ sscanf(ligne,"%s %d %d %d %s %s %s %s", pUser, &pid, &ppid, &c, stime, tty, time, pNomCommande); pProc->user = pUser; /*C'est là que ca merde*/ pProc->pid = pid; pProc->pidPere = ppid; pProc->nomCommande = pNomCommande; g_node_insert( g_node_find_pid(racine,pProc->pidPere),-1,g_node_new(pProc)); } fclose(fp);
Voilà le morceau de code qui coince. La fonction sscanf recupere bien tous les elements et me les met dans mes variables. Mais lorsque je veux remplier le champ "user" de ma structure, il me met une erreur de segmentation...
Ma structure ressemble à ca :
struct process{ int pid; int pidPere; char *user; char *nomCommande; }; typedef struct process PROCESS;
et je ne vois pas d'où ca peut venir.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 avril 2011 à 16:44
8 avril 2011 à 16:44
il manque la demande d'espace mémoire pour pProc. Il faut un pProc=malloc(sizeof process)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 avril 2011 à 16:53
8 avril 2011 à 16:53
étrange.
Fait un affichage de pUser juste après le sscanf.
Fait un affichage de pUser juste après le sscanf.