Problème de segmentation
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème de segmentation



  1. #1
    invitec3b20df7

    Problème de segmentation


    ------

    Bonjour,

    Cela fait 3 semaine que je suis bloqué, j'ai besoin d'aide avant le jeudi 28 mars s'il vous plait.

    Code:
    #include <unistd.h> 
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include <math.h> 
    #include "../lib/libgraphique.h" 
    
    typedef struct connexion 
    { 
    char mois[4]; 
    float janv; 
    float feb; 
    float mar; 
    float avr; 
    float mai; 
    float juin; 
    float juil; 
    float aout; 
    float sep; 
    float oct; 
    float nov; 
    float dec; 
    float total; 
    } connexion_t; 
    
    void lecture_style() 
    { 
    FILE *fd; 
    char str[1024]; 
    if ((fd = fopen("aecrire.html","r")) == NULL) 
    fprintf(stderr,"ERREUR DE CHARGEMENT DE FICHIER\n"); 
    else { 
    while (!feof(fd)){ 
    fgets(str,1024,fd); 
    printf("%s",str); 
    } 
    
    fclose(fd); 
    
    } 
    } 
    
    void versionweb(float somme,float *tab) 
    { 
    int ta=(int) tab[0]; 
    int tz=(int) tab[1]; 
    int te=(int) tab[2]; 
    int tr=(int) tab[3]; 
    int tt=(int) tab[4]; 
    int ty=(int) tab[5]; 
    int tu=(int) tab[6]; 
    int ti=(int) tab[7]; 
    int to=(int) tab[8]; 
    int tp=(int) tab[9]; 
    int tq=(int) tab[10]; 
    int ts=(int) tab[11]; 
    printf("Content-type: text/html\n\n"); 
    
    printf("<!doctype html>\n"); 
    printf("<html lang=\"fr\">\n"); 
    printf("<body>\n"); 
    
    lecture_style(); 
    
    printf("Depuis le 01/Jan/2018 on a enregistré %f connexions.<br>\n",somme); 
    
    printf("<div id = \"vertgraph\">\n"); 
    printf(" <ul>\n"); 
    
    printf(" <li style=\"left: 10px; height: %dpx;\">%d</li>\n",ta*10,ta); 
    printf(" <li style=\"left: 41px; height: %dpx;\">%d</li>\n",tz*10,tz); 
    printf(" <li style=\"left: 72px; height: %dpx;\">%d</li>\n",te*10,te); 
    printf(" <li style=\"left: 103px; height: %dpx;\">%d</li>\n",tr*10,tr); 
    printf(" <li style=\"left: 134px; height: %dpx;\">%d</li>\n",tt*10,tt); 
    printf(" <li style=\"left: 165px; height: %dpx;\">%d</li>\n",ty*10,ty); 
    printf(" <li style=\"left: 196px; height: %dpx;\">%d</li>\n",tu*10,tu); 
    printf(" <li style=\"left: 227px; height: %dpx;\">%d</li> \n",ti*10,ti); 
    printf(" <li style=\"left: 258px; height: %dpx;\">%d</li> \n",to*10,to); 
    printf(" <li style=\"left: 289px; height: %dpx;\">%d</li> \n",tp*10,tp); 
    printf(" <li style=\"left: 320px; height: %dpx;\">%d</li>\n",tq*10,tq); 
    printf(" <li style=\"left: 351px; height: %dpx;\">%d</li> \n",ts*10,ts); 
    printf(" </ul>\n"); 
    printf("</div>\n"); 
    
    printf("</html>\n"); 
    printf("</body>\n\n"); 
    
    } 
    
    
    
    
    void versiongraphique(float somme, float *tab) 
    { 
    
    
    
    int sommes = (int) somme; 
    
    char stdr[246]; 
    sprintf(stdr,"%d",sommes); 
    
    
    int ta=(int) tab[0]; 
    char t0[256]; 
    sprintf(t0,"%d",ta); 
    int tz=(int) tab[1]; 
    char t1[256]; 
    sprintf(t1,"%d",tz); 
    int te=(int) tab[2]; 
    char t2[256]; 
    sprintf(t2,"%d",te); 
    int tr=(int) tab[3]; 
    char t3[256]; 
    sprintf(t3,"%d",tr); 
    int tt=(int) tab[4]; 
    char t4[256]; 
    sprintf(t4,"%d",tt); 
    int ty=(int) tab[5]; 
    char t5[256]; 
    sprintf(t5,"%d",ty); 
    int tu=(int) tab[6]; 
    char t6[256]; 
    sprintf(t6,"%d",tu); 
    int ti=(int) tab[7]; 
    char t7[256]; 
    sprintf(t7,"%d",ti); 
    int to=(int) tab[8]; 
    char t8[256]; 
    sprintf(t8,"%d",to); 
    int tp=(int) tab[9]; 
    char t9[256]; 
    sprintf(t9,"%d",tp); 
    int tq=(int) tab[10]; 
    char t10[256]; 
    sprintf(t10,"%d",tq); 
    int ts=(int) tab[11]; 
    char t11[256]; 
    sprintf(t11,"%d",ts); 
    
    Point p = {30,50}; 
    ouvrir_fenetre(470,400); 
    dessiner_rectangle((Point){0,0},470,400,blanc); 
    afficher_texte(stdr,12,p,noir); 
    p.y=300; 
    afficher_texte(" Jan Fev Mar Avr Mai Juin Juil Aou Sep Oct Nov Dec",14,p,vert); 
    dessiner_rectangle((Point){30,300-ta*10},30,ta*10,orange); 
    dessiner_rectangle((Point){61,300-tz*10},30,tz*10,orange); 
    dessiner_rectangle((Point){92,300-te*10},30,te*10,orange); 
    dessiner_rectangle((Point){123,300-tr*10},30,tr*10,orange); 
    dessiner_rectangle((Point){154,300-tt*10},30,tt*10,orange); 
    dessiner_rectangle((Point){185,300-ty*10},30,ty*10,orange); 
    dessiner_rectangle((Point){216,300-tu*10},30,tu*10,orange); 
    dessiner_rectangle((Point){247,300-ti*10},30,ti*10,orange); 
    dessiner_rectangle((Point){278,300-to*10},30,to*10,orange); 
    dessiner_rectangle((Point){309,300-tp*10},30,tp*10,orange); 
    dessiner_rectangle((Point){340,300-tq*10},30,tq*10,orange); 
    dessiner_rectangle((Point){371,300-ts*10},30,ts*10,orange); 
    afficher_texte(t0,14,(Point){40,300-ta*9},blanc); 
    afficher_texte(t1,14,(Point){71,300-tz*9},blanc); 
    afficher_texte(t2,14,(Point){102,300-te*9},blanc); 
    afficher_texte(t3,14,(Point){133,300-tr*9},blanc); 
    afficher_texte(t4,14,(Point){164,300-tt*9},blanc); 
    afficher_texte(t5,14,(Point){195,300-ty*9},blanc); 
    afficher_texte(t6,14,(Point){226,300-tu*9},blanc); 
    afficher_texte(t7,14,(Point){257,300-ti*9},blanc); 
    afficher_texte(t8,14,(Point){288,300-to*9},blanc); 
    afficher_texte(t9,14,(Point){319,300-tp*9},blanc); 
    afficher_texte(t10,14,(Point){350,300-tq*9},blanc); 
    afficher_texte(t11,14,(Point){381,300-ts*9},blanc); 
    actualiser(); 
    attendre_clic(); 
    fermer_fenetre(); 
    } 
    
    
    void versiontext(float total, float *tab) 
    { 
    
    
    
    printf("Depuis le date on a enregistré %f connexions.\n",total); 
    printf("\tJanvier : %f %%\n", tab[0]); 
    printf("\tFevrier: %f %%\n", tab[1]); 
    printf("\tMars : %f %%\n", tab[2]); 
    printf("\tAvril : %f %%\n", tab[3]); 
    printf("\tMai : %f %%\n", tab[4]); 
    printf("\tJuin: %f %%\n", tab[5]); 
    printf("\tJuillet: %f %%\n", tab[6]); 
    printf("\tAout : %f %%\n", tab[7]); 
    printf("\tSeptembre : %f %%\n", tab[8]); 
    printf("\tOctobre : %f %%\n", tab[9]); 
    printf("\tNovembre : %f %%\n", tab[10]); 
    printf("\tDecembre : %f %%\n", tab[11]); 
    } 
    
    void decoup(char* array,connexion_t ***u) 
    { 
    int i = 0; 
    int j = 0; 
    
    
    for (; array[i]!='/'; i++); 
    i++; 
    for (; array[i] != '/'; i++, j++) 
    (***u).mois[j]=array[i]; 
    (***u).mois[j]='\0'; 
    if(strcmp((***u).mois,"Jan")==0) 
    { 
    (***u).janv++; 
    (***u).total++;} 
    
    else if(strcmp((***u).mois,"Feb")==0) 
    { 
    (***u).feb++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Mar")==0) 
    { 
    (***u).mar++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Apr")==0) 
    { 
    (***u).avr++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"May")==0) 
    { 
    (***u).mai++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Jun")==0) 
    { 
    (***u).juin++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Jul")==0) 
    { 
    (***u).juil++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Aug")==0) 
    { 
    (***u).aout++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Sep")==0) 
    { 
    (***u).sep++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Oct")==0) 
    { 
    (***u).oct++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Nov")==0) 
    { 
    (***u).nov++; 
    (***u).total++;} 
    else if(strcmp((***u).mois,"Dec")==0) 
    { 
    (***u).dec++; 
    (***u).total++;} 
    } 
    
    
    
    void stat(char *av[], connexion_t ***u){ 
    float somme= (***u).total; 
    int sommes= (int) somme; 
    float p[12]; 
    p[0]= (***u).janv; 
    p[1]=(***u).feb; 
    p[2]=(***u).mar; 
    p[3]=(***u).avr; 
    p[4]=(***u).mai; 
    p[5]=(***u).juin; 
    p[6]=(***u).juil; 
    p[7]=(***u).aout; 
    p[8]=(***u).sep; 
    p[9]=(***u).oct; 
    p[10]=(***u).nov; 
    p[11]=(***u).dec; 
    printf("%d\n",sommes); 
    for (int y = 0; y < 13; ++y) 
    { 
    p[y] = (p[y]*100)/somme; 
    
    } 
    if (strcmp(av[1], "web") == 1) 
    { 
    strcmp(av[1], "web") == 0 ? versionweb(somme,p) : 0; 
    } 
    else{ 
    strcmp(av[1], "-txt") == 0 ? versiontext(somme,p) : 0; 
    strcmp(av[1], "-gr") == 0 ? versiongraphique(somme,p) : 0; 
    } 
    } 
    
    
    
    void par(FILE *fd, char* av[], connexion_t** u) 
    { 
    
    char st[5000]; 
    while (!feof(fd)){ 
    fgets(st,5000,fd); 
    decoup(st,&u); 
    } 
    
    stat(av,&u); 
    } 
    
    
    
    int ouv(char* av[],connexion_t* u) 
    { 
    FILE *fd; 
    
    if ((fd = fopen("/var/log/apache2/access.log","r")) == NULL) { 
    printf("aie"); 
    return (84); 
    } 
    
    par(fd,av,&u); 
    return (0); 
    } 
    
    
    int main(int ac, char* av[]) 
    { 
    
    if (ac==1){ 
    av[1] = "web"; 
    } 
    connexion_t u; 
    ouv(av,&u); 
    return (0); 
    }

    -----

  2. #2
    albanxiii
    Modérateur

    Re : Problème de segmentation

    Bonjour et bienvenue sur le forum,

    Quel est votre problème précisément ?
    Not only is it not right, it's not even wrong!

  3. #3
    Jack
    Modérateur

    Re : Problème de segmentation

    Un petit coup de debugger permettrait de connaitre l'instruction qui fait planter et de réduire considérablement le temps de recherche du problème.

  4. #4
    pm42

    Re : Problème de segmentation

    Citation Envoyé par Jack Voir le message
    Un petit coup de debugger permettrait de connaitre l'instruction qui fait planter et de réduire considérablement le temps de recherche du problème.
    Oui et vu que le code donné ne peut pas être compilé tel quel à cause des #include, le débuter en lecture seule nécessiterait une certaine abnégation.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Problème de segmentation

    Et tout ça sans compter l'absence d'indentation ...

  7. #6
    Fustigator

    Re : Problème de segmentation

    C'est une idée à moi ou les 3/4 du code sont parfaitement inutiles ?

    Il convient d'informer le PO que les développeurs, contrairement aux écrivains feuilletonistes du XIXè, ne sont pas payés à la ligne.
    Dernière modification par Fustigator ; 28/03/2019 à 10h33.

  8. #7
    pm42

    Re : Problème de segmentation

    Citation Envoyé par Fustigator Voir le message
    C'est une idée à moi ou les 3/4 du code sont parfaitement inutiles ?
    Sans doute.

    Citation Envoyé par Fustigator Voir le message
    Il convient d'informer le PO que les développeurs, contrairement aux écrivains feuilletonistes du XIXè, ne sont pas payés à la ligne.
    Vu qu'il est apparemment dans la catégorie "j'ai besoin d'aide pour faire mes devoirs mais je ne reviendrais même pas parler avec les gens à qui j'en ai demandé", on va voir ce qui se passe.

  9. #8
    Stan_94

    Re : Problème de segmentation

    J'aime bien le ton des réponses
    J'en connais des développeurs qui pensent probablement être payés à la ligne ! Enfin, quand je dis développeur, c'est de l'ABAP, sur SAP, donc...

    Bref, on est le jeudi 28 mars, donc trop tard pour aider le demandeur qu'on ne reverra probablement plus de sitôt.

  10. #9
    Fustigator

    Re : Problème de segmentation

    Citation Envoyé par Stan_94 Voir le message
    J'aime bien le ton des réponses
    Honnêtement : que répondre à un gars qui balance un code en vrac sans même expliquer le problème qu'il rencontre ?
    Lui poster un bulletin météo ou une carte de voeux ?

    J'en connais des développeurs qui pensent probablement être payés à la ligne ! Enfin, quand je dis développeur, c'est de l'ABAP, sur SAP, donc...
    Je compatis .....

Discussions similaires

  1. Pile en C problème de segmentation;
    Par inviteacc86bf5 dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 19/04/2011, 14h47
  2. segmentation, matlab
    Par invitee1c46cca dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 26/03/2011, 20h29
  3. [Divers] Segmentation
    Par invitec44e9f82 dans le forum Biologie
    Réponses: 1
    Dernier message: 06/03/2009, 15h18
  4. probleme de "segmentation fault" (langage C)
    Par invitea0f03ccc dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 27/01/2009, 14h41
  5. J'ai un problème avec un segmentation fault
    Par invite93279690 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 30/01/2007, 08h08