IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

recuperation d'une chaine de caractere dans un tableau


Sujet :

C

  1. #21
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Je suis tout a fait d'accord avec toi sur le fait que la methode est desastreuse et que ce n'est pas du tout educatif mais j'agis un peu dans l'urgence, je ne m'attendais pas a devoir rendre ce programme aussi rapidement...

    Ce qui me reste a faire ca donnerait ca
    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
     
    BOUCLE i
    if colonne8 nulle
            then mettre colonne1 dans nom_rep1
            mettre colonne2 dans chemin_rep1
    else
            BOUCLE j
            if colonne8 nulle
                    then mettre colonne1 dans nom_rep2
                    mettre colonne2 dans chemin_rep2
            elseif ligne[i].colonne6=ligne[j].colonne6 andif ligne[i].colonne8=ligne[j].colonne8
                    then mettre colonne8 dans nom_fich
                    BOUCLE k
                    if colonne8=nom_rep1
                            mettre colonne6 dans date_rep1
                    elseif colonne8=nom_rep2
                            mettre colonne6 dans date_rep2
                    */petit programme pour mettre la date en chiffre*/
                    if année1<année2
                            mettre chemin_rep2 dans nom_sup
                    elseif année1>année2
                            mettre chemin_rep1 dans nom_sup
                    else
                            if mois1<mois2
                                     mettre chemin_rep2 dans nom_sup
                            elseif mois1>mois2
                                     mettre chemin_rep1 dans nom_sup
                            else
                                     if jour1<jour2
                                              mettre chemin_rep2 dans nom_sup
                                     elseif jour1>jour2
                                              mettre chemin_rep1 dans nom_sup
    // le fichier ne peut pas se trouver dans deux fichiers crée le même jour
                    suppression = fopen("supression.txt", "rw");
                    fprintf(suppression, "#!/bin/csh \n");
                    fprintf(suppression, "rm -i %s/%s; \n",nom_sup,nom_fich);

  2. #22
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Ya un truc que je comprend pas sinon..
    Si j'affecte une case de mon tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy (ptableau[3].colonne3,"dossier");
    pourquoi j'arrive pas a retrouver cette case en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (ptableau[3].colonne3 == "dossier")
                     printf...

  3. #23
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Tim_noob Voir le message
    Ya un truc que je comprend pas sinon..
    Si j'affecte une case de mon tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy (ptableau[3].colonne3,"dossier");
    pourquoi j'arrive pas a retrouver cette case en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (ptableau[3].colonne3 == "dossier")
                     printf...
    Parce qu'en C, on ne compare pas le contenu d'un tableau de caractère avec une constante chaine de caractères de cette manière, on utilise la fonction strcmp() de la bibliothèque standard.

    La bonne manière de procéder est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (strcmp(ptableau[3].colonne3, "dossier") != 0)
    {
        /* Suite du code */
    }
    Mais comme te l'a dit Emmanuel, on en est pas encore là. Rien ne sert de vouloir pondre du code en langage C si tu nas pas encore définit précisément l'algorithme que tu désires implanter. Pour cela, il n'y a pas 36 solutions. Tu éteint ton PC, tu prends une feuille, un crayon, et tu essaye de définir l'algorithme d'abord en français comme tu l'as fait plus haut, puis dans un pseudocode plus proche du langage d'implantation. Rien ne sert d'aller trop rapidement. Procède par itérations successives. Inutile de t'emmêler trop tôt les pinseaux avec des détails d'implantation de trop bas niveau.

    Cela peut te sembler être une perte de temps de procéder ainsi, mais tu verras qu'au final, tu aura un programme bien mieux conçu, bien plus robuste, et plus lisible, tout ça en minimisant le temps nécessaire pour le débogage.

    Thierry

  4. #24
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Yep, c'est pour ca que j'ai mis plus haut par ecrit ce que j'avais a peu pres en tete
    Ca a le merite de me montrer combien de lignes de codes il me reste a taper.

    Sinon pour le string compare, j'aurais du y penser, je connais cette commande en plus, j'etais resté fixé sur mon if == NULL...

    edit: j'ai deja presque réussi a supprimer de manière bête le premier fichier que je rencontre des deux, il ne me reste "plus qu'à" supprimer le fichier du dossier le plus recent.
    Le fait que ca compile et que ca marche commence a me reconcilier avec le C..

  5. #25
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    Salut,

    j'ai un peu avancé dans mon programme, il me reste plus qu'a regler un probleme et je pourrais un peu nettoyer le code qui est carrement degeulasse...

    J'ai un soucis avec ma partie qui récupere a partir d'une chaine de caractere aaaa-mm-jj l'année le jour et la date

    Elle provient du programme de mon pote, et utilise la capacité du strtok a récupérer une partie d'une chaine de caractere mais j'ai regardé son fonctionnement et le fait qu'elle renvoit un pointeur sur l'element ne m'interesse pas.

    Je cherche donc une fonction qui puisse me renvoyer trois chaines de caracteres ou plutot trois int..(j'ai vu sur internet trois fonctions pouvant resoudre mon probleme; fread, fgets et scanf)

    ci-joint la derniere version de mon programme (même si yen a pas besoin pour résoudre ma question..)

    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
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define NB 100
     
    typedef struct ligne
    {                      	//on définit le tableau
    	char colonne1[NB];
    	char colonne2[NB];
    	char colonne3[NB];
    	char colonne4[NB];
    	char colonne5[NB];
    	char colonne6[NB];
    	char colonne7[NB];
    	char colonne8[NB];
    } ligne;
     
    typedef struct tm
    {
    	char t[NB];
    } tm;
     
    int main ()
    {                                           //définition des valeurs
    	int i=0;
    	int j;
    	int k;
    	int nbc;
    	char nom_rep1[NB];                      //nom du repertoire pere du fichier 1
    	char nom_rep2[NB];                      //nom du repertoire pere du fichier 2
    	char chemin_rep1[NB];                   //chemin d'accès répertoire 1
    	char chemin_rep2[NB];                   //chemin d'accès répertoire 2
    	char nom_fich[NB];                      //nom du fichier à supprimer
       	char date_rep1[NB];                     //date de derniere modif repertoire 1
       	char date_rep2[NB];                     //date de derniere modif repertoire 2
       	char chemin_sup[NB];
       	int n;                                  //nombre de lignes de liste.txt qu'on va trouver grace a wc -l
                                                //end définition des valeurs
        //recuperation de n
    	FILE * nfile;
    	char ntext[NB];
    	nfile = fopen("n.txt","r");             //ouverture du fichier contenant le nombre de lignes
    	fgets(ntext,NB - 1,nfile);              //   |
    	n = atoi(ntext);                        //   | récupération de la valeur de n
    	printf("%d\n", n);                      //test de la récupération de n
    	// end recuperation
     
    	tm tmp[7];
        ligne *ptableau = malloc(sizeof *ptableau *n);
        char *chaine = malloc(sizeof *chaine);
        char *tab = malloc(sizeof *tab);
        char *tampon = malloc(sizeof *tampon);
        char *tmpnom = malloc(sizeof *tmpnom);
        char *tmpche = malloc(sizeof *tmpche);
        char *tmpd1 = malloc(sizeof *tmpd1);           //temporaire de la date1
        tmpd1="";                                     //initialise la date1
        char annee1[NB];
        char mois1[NB];
        char jour1[NB];
        char *tmpd2 = malloc(sizeof *tmpd2);           //temporaire de la date2
        tmpd2="";                                     //initialise la date2
        char annee2[NB];
        char mois2[NB];
        char jour2[NB];
     
            //définition du script suppression
        FILE * suppression = NULL;
        suppression = fopen("suppression.txt", "w");
        if (suppression != NULL)
        {
            fprintf(suppression,"#!/bin/csh \n");
            fclose(suppression);
        }
            //end définition du script suppression
     
        FILE * moulinette = NULL;
        moulinette  = fopen("listebis.txt","r");
        i=-1;
        while ( ! feof (moulinette) )
        {
            fgets(chaine,NB,moulinette);                 // on met ligne par ligne le resultat de ls -alR dans "chaine"
            tab=strtok(chaine," \n");                    //on recupere chaque chaine de charactere de "chaine"
            if(tab==NULL)                                //si il n'y a aucune chaine de charactere a recuperer, on ne prend rien
                continue;
            if(strcmp(tab,"total")==0)                   //si le premier charactere est total on ne prend pas non plus
                continue;
            i++;
            j=0;
            while (tab != NULL)                          // tant que le tab n'est pas vide, on continue a prendre des valeurs
            {
                strcpy(tmp[j].t,tab);                    //on met chaque valeur de tab dans une variable tampon tmp[j] de 0 a 7
                j++;
                tab = strtok (NULL," \n");               //on reinitialise tab
            }
            if (strlen(tmp[0].t)>strcspn(tmp[0].t,":"))  //sctrcspn compte le nombre characteres moins le ":", strlen compte le nombre de characteres => si c un dossier, il se finit par ":", donc on rentre dans cette boucle
            {
                tampon = strtok(tmp[0].t,":");           //on met le nom de dossier sans ":" dans une variable tampon
                strcpy(ptableau[i].colonne1,tampon);     //on met cette variable tampon dans la ligne concernée colonne 1
                strcpy(ptableau[i].colonne3,"dossier");  //on indique que cette ligne concerne un dossier
            }
            else
            {
                strcpy(ptableau[i].colonne1,tmp[0].t); 	 //droits d'execution, lecture
                strcpy(ptableau[i].colonne2,tmp[1].t);
                strcpy(ptableau[i].colonne3,tmp[2].t); 	 //dossier utilisateur
                strcpy(ptableau[i].colonne4,tmp[3].t); 	 //dossier parent
                strcpy(ptableau[i].colonne5,tmp[4].t); 	 //poids
                strcpy(ptableau[i].colonne6,tmp[5].t); 	 //date de derniere modif
                strcpy(ptableau[i].colonne7,tmp[6].t); 	 //heure de derniere modif
                strcpy(ptableau[i].colonne8,tmp[7].t); 	 //nom du fichier, dossier
            }
        }
        free (chaine), chaine = NULL;       //
        free (tab), tab = NULL;             //libération de la mémoire
        free (tampon), tampon = NULL;       //
        fclose (moulinette);
        nbc=i;                              //nombre de lignes du tableau après avoir oté les blancs et les lignes poids total du dossier
        printf("%d",nbc);					//test nombre de lignes tableau
        for (i=0;i<nbc;i++)
        {
            // test du tableau
            printf("%s %s %s %s %s %s %s %s\n",
            ptableau[i].colonne1,
            ptableau[i].colonne2,
            ptableau[i].colonne3,
            ptableau[i].colonne4,
            ptableau[i].colonne5,
            ptableau[i].colonne6,
            ptableau[i].colonne7,
            ptableau[i].colonne8);
            // end test
            if (strcmp(ptableau[i].colonne3,"dossier") == 0) //vérification si la ligne concernce un dossier ou un fichier
            {
                strcpy(tmpche,ptableau[i].colonne1);
                tmpnom=strtok(tmpche,"/");
                while (tmpnom!=NULL)
                {
                    strcpy(ptableau[i].colonne2,tmpnom);
                    tmpnom=strtok(NULL,"/");
                }
                strcpy(chemin_rep1,ptableau[i].colonne1);
                strcpy(nom_rep1,ptableau[i].colonne2);
            }
            else
            {
                for (j=i+1;j<nbc;j++)
                {
                    if (strcmp(ptableau[j].colonne3,"dossier") == 0) //vérification si la ligne concernce un dossier ou un fichier
                    {
                        strcpy(tmpche,ptableau[j].colonne1);
                        tmpnom=strtok(tmpche,"/");
                        while (tmpnom!=NULL)
                        {
                            strcpy(ptableau[j].colonne2,tmpnom);
                            tmpnom=strtok(NULL,"/");
                        }
                        strcpy(chemin_rep2,ptableau[j].colonne1);
                        strcpy(nom_rep2,ptableau[j].colonne2);
                    }
                    else if (((strcmp(ptableau[i].colonne6,ptableau[j].colonne6)) == 0) &&   //même date
                    ((strcmp(ptableau[i].colonne8,ptableau[j].colonne8)) == 0) &&       //même nom
                    ((strcmp(ptableau[i].colonne8,".")) != 0) &&                        //évite les répertoires courants
                    ((strcmp(ptableau[i].colonne8,"..") != 0)))                         //évite les répertoires pères
                    {
                        strcpy(nom_fich,ptableau[i].colonne8);                          //récuperation nom fichier à supprimer
                        for (k=0;k<nbc;k++)
                        {
                            if ((strcmp(ptableau[k].colonne8,nom_rep1)) == 0)
                            {
                                strcpy(date_rep1,ptableau[k].colonne6);
     
                            }
                            else if ((strcmp(ptableau[k].colonne8,nom_rep2)) == 0)
                            {
                                strcpy(date_rep2,ptableau[k].colonne6);
                            }
                        }
                        printf("chemin1 %s\n",chemin_rep1);          //test chemin_rep1
                        printf("nom1 %s\n",nom_rep1);                //test nom_rep1
                        printf("chemin2 %s\n",chemin_rep2);          //test chemin_rep2
                        printf("nom2 %s\n",nom_rep2);                //test nom_rep2
                        printf("fichier %s \n",nom_fich);            //test nom fichier
                        printf("date1 %s \n",date_rep1);             //test date 1
                        printf("date2 %s \n",date_rep2);             //test date 2
     
     
                        ////probleme!!
     
     
                        tmpd1 = strtok(date_rep1,"-");               //pour retirer les -
                        strcpy(annee1,tmpd1);               // rajoute tmpd1 dans annee1
                        tmpd1 = strtok (NULL,"-");             // passe à la sous-chaine suivante à chaque "-"
                        strcat(mois1,tmpd1);
                        tmpd1 = strtok (NULL,"-");
                        strcat(jour1,tmpd1);
                        printf("date1 %s %s %s\n",jour1,mois1,annee1);     //test date1
                        tmpd2 = strtok(date_rep2,"-");               //pour retirer les -
                        strcat(annee2,tmpd2);               // rajoute tmpd2 dans anneE2
                        tmpd2 = strtok (NULL,"-");             // passe à la sous-chaine suivante à chaque "-"
                        strcat(mois2,tmpd2);
                        tmpd2 = strtok (NULL,"-");
                        strcat(jour2,tmpd2);
                        printf("date2 %s %s %s\n",jour2,mois2,annee2);     //test date2
     
     
                        ////probleme!!
     
     
                        if ((strcmp(annee1,annee2)) >= 0)
                        {
                            strcpy(chemin_sup,chemin_rep1);
                        }
                        else if ((strcmp(annee1,annee2)) <= 0)
                        {
                            strcpy(chemin_sup,chemin_rep2);
                        }
                        else
                        {
                            if ((strcmp(mois1,mois2)) >= 0)
                            {
                                strcpy(chemin_sup,chemin_rep1);
                            }
                            else if ((strcmp(mois1,mois2)) <= 0)
                            {
                                strcpy(chemin_sup,chemin_rep2);
                            }
                            else
                            {
                                if ((strcmp(jour1,jour2)) >= 0)
                                {
                                    strcpy(chemin_sup,chemin_rep1);
                                }
                                else if ((strcmp(jour1,jour2)) <= 0)
                                {
                                    strcpy(chemin_sup,chemin_rep2);
                                }
                            }
                        }
                        // suppression ne prenant pas en compte la date de modif de dossier pere
                            suppression = fopen("suppression.txt", "a");
                        if (suppression != NULL)
                        {
                            fprintf(suppression,"rm -f %s/%s; \n",chemin_rep1,nom_fich);
                            fclose(suppression);
                        }
                        //end suppression
                        // suppression prenant en compte la date de modif de dossier pere
                        /*// phase de remplissage du script suppression
                            suppression = fopen("suppression.txt", "a");
                        if (suppression != NULL)
                        {
                            fprintf(suppression,"rm -f %s/%s; \n",chemin_sup,nom_fich);
                            fclose(suppression);
                        }*/
                        //end suppression
                    }
                }
            }
        }
        free (tmpche), tmpche = NULL;
        free (tmpnom), tmpnom = NULL;     //libération de la mémoire
        free (ptableau), ptableau = NULL;
        return 0;
    }

  6. #26
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Tim_noob Voir le message
    Elle provient du programme de mon pote, et utilise la capacité du strtok a récupérer une partie d'une chaine de caractere mais j'ai regardé son fonctionnement et le fait qu'elle renvoit un pointeur sur l'element ne m'interesse pas.
    Peut importe que ça t'intéresse ou non, c'est comme ça que fonctionne strtok. Tu ne sais pas faire une copie de chaine ?

    Quand au code, commence par corriger ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:24: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:56: warning: assignment discards qualifiers from pointer target type
    main.c:61: warning: assignment discards qualifiers from pointer target type
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 8 seconds)
    0 errors, 3 warnings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       char *tmpd1 = malloc (sizeof *tmpd1); //temporaire de la date1
       tmpd1 = "";                  //initialise la date1
    A ton avis, ça fait quoi ça ? Tu n'as toujours pas compris ce qu'est une chaine de caractère et comment on la copie ? Tu apprends le C comment ? Tu n'as pas de cours, de livre, de tutoriel ? La manipulation des chaines fait partie des éléments de base du C.

  7. #27
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Quelle est le but de ce morceau de code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        /* -tc- pourquoi utiliser l'allocation dynamique pour une chaine de 1 
           caractere? */
        char *chaine = malloc(sizeof *chaine);
        char *tab = malloc(sizeof *tab);
        char *tampon = malloc(sizeof *tampon);
        char *tmpnom = malloc(sizeof *tmpnom);
        char *tmpche = malloc(sizeof *tmpche);
        char *tmpd1 = malloc(sizeof *tmpd1);
    A part ça, il y a un principe fondamental que tu dois absolument apprendre. On appelle cela la factorisation du code. C'est à cela que servent les fonctions. En découpant ton code en fonctions, tu introduis un niveau d'abstraction qui le rend beaucoup plus facile à lire et à comprendre. Par ailleurs, une fonction est réutilisable à plusieurs endroits dans le programme, ce qui permet de luter efficacement comme la duplication de code. Je n'ai pas le temps ni l'envie de corriger une code de 300 lignes qui n'utilise aucune fonction.

    Thierry

  8. #28
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    => Emmanuel Delahaye
    Si si je comprend ce que ca veut dire, je suis juste pas totalement au point sur les compatibilités entre les différents types et l'utilisation de tel ou tel instrument en fonction du type que je manipule. Pour m'informer en général je me base sur un site, mais j'ai pas vraiment le temps pour l'instant de reprendre a 0. J'aimerais etre plus a l'aise avec ca donc je me referais tout le tuto une fois que j'en aurais fini avec ce programme. La je suis plus dans l'urgence...

    Sinon pour mon probleme je pense qu'il faut caster les pointers en integer parceque je pourrais de toute facon pas comparer des pointers mais je suis pas sur de moi.

    => Thierry Chapuis
    oue je comprend bien que t'en ais pas l'envie, d'ailleurs je te demandais pas de le corriger dans l'etat ou il est, je le mettais juste en annexe.
    Sinon pour l'allocation dynamique, je trouvais ca plus simple, mais j'imagine que ca prend plus de ressources..?

  9. #29
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Autrement dit, tu ne sais pas ce que tu fais, et tu fais donc n'importe quoi... Ben c'est le plus sûr moyen d'aller droit dans le mur. Pourquoi y'a-t-il urgence ? Que faisait-tu pendant les cours de C, notamment sur l'allocation dynamique ?

    Encore une fois, le C ça ne s'invente pas, c'est pas une histoire de devinette ou de feeling. Le C, ça s'apprend correctement. Point. Tant que tu n'auras pas compris ça, tu n'avanceras pas et tu continueras à écrire du code truffé d'âneries...

    Alors arrête tout, prend le temps nécessaire pour apprendre le C correctement et là, tu pourras enfin écrire du code cohérent. En attendant, tu perds ton temps (et le nôtre...).

  10. #30
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Points : 4
    Points
    4
    Par défaut
    J'ai sous estimé le C quand on en etait aux printf et aux scanf et apres ca s'est accéléré a partir des pointeurs et des tableaux et j'ai laché prise...
    Je suis conscient de progresser infiniment peu par rapport a un reel apprentissage mais j'ai plein de projet a gerer et la date fatidique pour rendre celui la s'approche a grands pas.
    J'ai deja l'impression d'etre un parasite depuis mon premier post ici et je pensais pas que quelqu'un prendrait la peine de lire le code que j'ai pondu mais j'avais pas trop le choix... Maintenant je veux en finir avec ca pour pouvoir recommencer l'apprentissage (qui en plus va me paraitre beaucoup plus simple maintenant que j'ai galéré a tester toutes les fonctions) et ne plus voir ca comme une corvée ms plus comme un plaisir

  11. #31
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut tableau lang c
    bonjour
    je ne suis peut etre pas sur le bon forum enfin si une bonne ames passe par la ...
    j'ai un probleme en langage c je n'arrive pas a effectuer de operation sur les tableau par exemple rechercher une valeur dans un bete tableaux de 10 element ou extraire juste les nombres positif d'un tableau pour les mettre dans un autre ...
    je ne demande pas les reponse juste la methode
    merci bcp
    greg

  12. #32
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par greg0488 Voir le message
    bonjour
    je ne suis peut etre pas sur le bon forum enfin si une bonne ames passe par la ...
    j'ai un probleme en langage c je n'arrive pas a effectuer de operation sur les tableau par exemple rechercher une valeur dans un bete tableaux de 10 element ou extraire juste les nombres positif d'un tableau pour les mettre dans un autre ...
    je ne demande pas les reponse juste la methode
    merci bcp
    greg
    Bonjour et bienvenue sur le forum :
    Une recommendation :
    Il ne faut pas s'approprier la discussion d'un autre mais ouvrir un nouveau sujet et détruire ce message.

Discussions similaires

  1. erreur pour une insertion d'une chaine de caractere dans une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2006, 09h09
  2. Réponses: 10
    Dernier message: 16/06/2006, 13h53
  3. Réponses: 10
    Dernier message: 22/05/2006, 11h45
  4. Réponses: 2
    Dernier message: 04/11/2005, 11h35
  5. [Debutant] Mettre une chaine de caractere dans un tableau
    Par bouboussjunior dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 14/09/2004, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo