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 :

Erreur de compilation


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Erreur de compilation
    bonjour

    voila j'ai un petit problème avec mon code et je n'arrive pas à trouver la solution adequate. j'ai beau chercher depuis quelques jours mais

    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
     
    #include<stdio.h>
    #include<string.h>
     
    #define FILENAME "meibo.txt"
    #define MAX_STUDENT_NUM 100
     
    struct student{
    int id;
    char first_name[100];
    char last_name[100];
    char tel_number[100];
    };
     
     
    void read_file(char*filename, struct student*sl, int sln)
    {
    FILE*fp=NULL;
    int i, id;
    char fn[100], ln[100], tn[100];
     
    if((fp= fopen("meibo.txt", "r")) == NULL)
    return;
     
    for(i=0;i<sln;i++){
    if(fscanf(fp, &id, fn, ln, tn)<=0)
    break;
    sl[i].id = id;
    strcpy(*char );
    strcpy(*char last_name);
    strcpy(*char tel_number);
    }
     
    fclose(fp);
    }
     
     
    void print_all(struct student*sl, int n)
    {
    int i;
    for(i=0; i<n; i++){
    printf("%d %s %s %s\n",
    sl[i].id,
    sl[i].first_name,
    sl[i].last_name,
    sl[i].tel_number);
    }
    }
     
     
    void print_by_id(struct student*sl, int n, int id)
    {
    int i;
    for(i=0; i<n; i++){
    if(sl[i].id == id){
    printf("%d %s %s %s\n",
    sl[i].id,
    sl[i].first_name,
    sl[i].last_name,
    sl[i].tel_number);
    }
    }
    }
     
     
    int lookup(struct student *sl, int n, int mode, char *str)
    {
    int id = -1, i;
    int compresult = -1;
     
    for(i=0; i<n; i++) {
    switch(mode){
    strcmp; id :
    printf("mode = first_number\n");
    break;
    strcmp;
    printf("mode = last_name\n");
    break;
    strcmp;
    printf("mode = tel_number\n");
    break;
    strcmp;
    printf("mode = -1\n");
    default:
    break;
    }
    if(compresult == 0){
    id = sl[i].id;
    break;
    }
    }
     
    return id;
    }
     
     
    int main()
    {
    int id;
    struct student studentlist[MAX_STUDENT_NUM];
     
    scanf(FILENAME, &studentlist[0], MAX_STUDENT_NUM);
    fprint(&studentlist[0], 3);
     
    printf("\n");
     
    printf("lookup foo1\n");
    id = lookup(studentlist, 3, 1, "foo1");
     
    if(id != -1){
    printf("foo1 info:\n");
    print_by_id(studentlist, MAX_STUDENT_NUM, id);
    }
     
    printf("\n");
     
    printf("lookup bar2\n");
    id= lookup(studentlist, 3, 2,"bar2");
     
    if(id !=-1){
    printf("bar2 info:\n");
    print_by_id(studentlist, MAX_STUDENT_NUM, id);
    }
     
    printf("\n");
     
    printf("lookup 111-1111-1111\n");
    id = lookup(studentlist, 3, 3, "111-1111-1111");
     
    if(id !=-1){
    printf("telnum(111-1111-1111) info:\n");
    print_by_id(studentlist, MAX_STUDENT_NUM, id);
     
    }
    }
    le resultat doit me donner une liste qui au depart etait comme ceci
    0 foo0 bar0 000-0000-0000
    1 foo1 bar1 111-1111-1111
    2 foo2 bar2 222-2222-2222

    à une liste qui doit etre comme cela
    lookup foo1
    foo1 info:
    ID: 1
    FN: foo1LN: bar1
    TN: 111-1111-1111

    lookup bar2
    bar2 info:
    ID: 2
    FN: foo2LN: bar2
    TN: 222-2222-2222

    lookup 111-1111-1111
    telnum(111-1111-1111) info:
    ID: 1
    FN: foo1LN: bar1
    TN: 111-1111-1111

    merci d'avance

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Commente ton code, indente ton code, affiche nous les erreurs de compilation, je ne comprend pas ce que tu code quand tu écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strcpy(*char );
    strcpy(*char last_name);
    strcpy(*char tel_number);
    Et enfin, ton instruction Switch n'est suivi par aucune instruction Case, c'est plutôt louche !

  3. #3
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour,

    le switch case aussi a pas l air tres orthodoxe, le fscanf aussi !
    "vaste programme"

  4. #4
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Scorpi0 Voir le message
    Commente ton code, indente ton code, affiche nous les erreurs de compilation, je ne comprend pas ce que tu code quand tu écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strcpy(*char first_name );
    strcpy(*char last_name);
    strcpy(*char tel_number);
    Et enfin, ton instruction Switch n'est suivi par aucune instruction Case, c'est plutôt louche !
    je suis trompe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    strcpy(*char first_name );
    strcpy(*char last_name);
    strcpy(*char tel_number);
    pour l'introduction switch je l'avais fait suivre par une instruction Case mais des message d'erreur sont apparu lors ma compilation
    (erreur: l'étiquette du « case » ne se réduit pas en une constante entière)

    pour les messages d'erreurs les voici :
    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
     
    ld:\Mes documents\Projet C\test\main.c||In function `read_file':|
    d:\Mes documents\Projet C\test\main.c|25|warning: passing arg 2 of `fscanf' from incompatible pointer type|
    d:\Mes documents\Projet C\test\main.c|28|error: syntax error before "char"|
    d:\Mes documents\Projet C\test\main.c|29|error: syntax error before "char"|
    d:\Mes documents\Projet C\test\main.c|30|error: syntax error before "char"|
    d:\Mes documents\Projet C\test\main.c|15|warning: unused parameter 'filename'|
    d:\Mes documents\Projet C\test\main.c||In function `lookup':|
    d:\Mes documents\Projet C\test\main.c|72|warning: label `id' defined but not used|
    d:\Mes documents\Projet C\test\main.c|65|warning: unused parameter 'str'|
    d:\Mes documents\Projet C\test\main.c||In function `lookup':|
    d:\Mes documents\Projet C\test\main.c|72|warning: will never be executed|
    d:\Mes documents\Projet C\test\main.c|75|warning: will never be executed|
    d:\Mes documents\Projet C\test\main.c|97|warning: function declaration isn't a prototype|
    d:\Mes documents\Projet C\test\main.c||In function `main':|
    d:\Mes documents\Projet C\test\main.c|101|warning: too many arguments for format|
    d:\Mes documents\Projet C\test\main.c|102|warning: implicit declaration of function `fprint'|
    d:\Mes documents\Projet C\test\main.c|107|warning: passing arg 4 of `lookup' discards qualifiers from pointer target type|
    d:\Mes documents\Projet C\test\main.c|117|warning: passing arg 4 of `lookup' discards qualifiers from pointer target type|
    d:\Mes documents\Projet C\test\main.c|127|warning: passing arg 4 of `lookup' discards qualifiers from pointer target type|
    ||=== Build finished: 3 errors, 12 warnings ===|

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Il va falloir retravailler les base du C je pense...

    1- On n'enlève pas un case après un switch parce que ça ne compile pas.
    2- Et on vas voir un manuel avant d'utiliser une fonction. strcpy prend 2 arguments et non pas un seul.

    Va relire tes cours sur les fonctions de base, ça sera un bon début

  6. #6
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    je t ai mis un ou 2 commentaire dans le code, commence par regler 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
    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
     
     
    #include<stdio.h>
    #include<string.h>
     
    #define FILENAME "meibo.txt"
    #define MAX_STUDENT_NUM 100
     
    struct student{
        int id;
        char first_name[100];
        char last_name[100];
        char tel_number[100];
    };
     
     
    void read_file(char*filename, struct student*sl, int sln)
    {
        FILE*fp=NULL;
        int i, id;
        char fn[100], ln[100], tn[100];
     
        if((fp= fopen("meibo.txt", "r")) == NULL)
            return;
     
        for(i=0;i<sln;i++){
            /* prototype int fscanf (FILE * stream, const char * format, ...); */
            if(fscanf(fp, "%d %s %s %s", &id, fn, ln, tn)<=0)
                break;
     
            sl[i].id = id;
     
            /* tu veux copier quoi dans quoi ? */
            /* syntaxe : strcpy( destination, chaine_a_copier ) */
            strcpy(*char );
            strcpy(*char last_name);
            strcpy(*char tel_number);
        }
     
        fclose(fp);
    }
     
     
    void print_all(struct student*sl, int n)
    {
        int i;
        for(i=0; i<n; i++){
            printf("%d %s %s %s\n",
            sl[i].id,
            sl[i].first_name,
            sl[i].last_name,
            sl[i].tel_number);
        }
    }
     
     
    void print_by_id(struct student*sl, int n, int id)
    {
        int i;
        for(i=0; i<n; i++){
            if(sl[i].id == id){
                printf("%d %s %s %s\n",
                sl[i].id,
                sl[i].first_name,
                sl[i].last_name,
                sl[i].tel_number);
            }
        }
    }
     
     
    int lookup(struct student *sl, int n, int mode, char *str)
    {
        int id = -1, i;
        int compresult = -1;
     
        for(i=0; i<n; i++) {
                /* remplace les chifffres (1,2,3 et 4) par les valeurs que peut prendre mode */
                switch(mode){
                case 1 :
                    printf("mode = first_number\n");
                    break;
                case 2 :
                    printf("mode = last_name\n");
                    break;
                case 3:
                    printf("mode = tel_number\n");
                    break;
                case 4 :
                    printf("mode = -1\n");
                    break;
                default:
                    break;
            }
     
            if(compresult == 0){
                id = sl[i].id;
                break;
            }
        }
     
        return id;
    }
     
     
    int main()
    {
        int id;
        struct student studentlist[MAX_STUDENT_NUM];
     
        scanf(FILENAME, &studentlist[0], MAX_STUDENT_NUM);
        fprint(&studentlist[0], 3);
     
        printf("\n");
     
        printf("lookup foo1\n");
        id = lookup(studentlist, 3, 1, "foo1");
     
        if(id != -1){
            printf("foo1 info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
     
        printf("\n");
     
        printf("lookup bar2\n");
        id= lookup(studentlist, 3, 2,"bar2");
     
        if(id !=-1){
            printf("bar2 info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
     
        printf("\n");
     
        printf("lookup 111-1111-1111\n");
        id = lookup(studentlist, 3, 3, "111-1111-1111");
     
        if(id !=-1){
            printf("telnum(111-1111-1111) info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
    }
    pour plus d info regarde le MAN, ici par exemple
    "vaste programme"

  7. #7
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Scorpi0 Voir le message
    Il va falloir retravailler les base du C je pense...

    1- On n'enlève pas un case après un switch parce que ça ne compile pas.
    2- Et on vas voir un manuel avant d'utiliser une fonction. strcpy prend 2 arguments et non pas un seul.

    Va relire tes cours sur les fonctions de base, ça sera un bon début
    c'est bien ce que je pense
    cela ne fait que 6 mois a peine que j'ai commence donc je ne suis encore rode dessus

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par BainE Voir le message
    je t ai mis un ou 2 commentaire dans le code, commence par regler 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
    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
     
     
    #include<stdio.h>
    #include<string.h>
     
    #define FILENAME "meibo.txt"
    #define MAX_STUDENT_NUM 100
     
    struct student{
        int id;
        char first_name[100];
        char last_name[100];
        char tel_number[100];
    };
     
     
    void read_file(char*filename, struct student*sl, int sln)
    {
        FILE*fp=NULL;
        int i, id;
        char fn[100], ln[100], tn[100];
     
        if((fp= fopen("meibo.txt", "r")) == NULL)
            return;
     
        for(i=0;i<sln;i++){
            /* prototype int fscanf (FILE * stream, const char * format, ...); */
            if(fscanf(fp, "%d %s %s %s", &id, fn, ln, tn)<=0)
                break;
     
            sl[i].id = id;
     
            /* tu veux copier quoi dans quoi ? */
            /* syntaxe : strcpy( destination, chaine_a_copier ) */
            strcpy(*char );
            strcpy(*char last_name);
            strcpy(*char tel_number);
        }
     
        fclose(fp);
    }
     
     
    void print_all(struct student*sl, int n)
    {
        int i;
        for(i=0; i<n; i++){
            printf("%d %s %s %s\n",
            sl[i].id,
            sl[i].first_name,
            sl[i].last_name,
            sl[i].tel_number);
        }
    }
     
     
    void print_by_id(struct student*sl, int n, int id)
    {
        int i;
        for(i=0; i<n; i++){
            if(sl[i].id == id){
                printf("%d %s %s %s\n",
                sl[i].id,
                sl[i].first_name,
                sl[i].last_name,
                sl[i].tel_number);
            }
        }
    }
     
     
    int lookup(struct student *sl, int n, int mode, char *str)
    {
        int id = -1, i;
        int compresult = -1;
     
        for(i=0; i<n; i++) {
                /* remplace les chifffres (1,2,3 et 4) par les valeurs que peut prendre mode */
                switch(mode){
                case 1 :
                    printf("mode = first_number\n");
                    break;
                case 2 :
                    printf("mode = last_name\n");
                    break;
                case 3:
                    printf("mode = tel_number\n");
                    break;
                case 4 :
                    printf("mode = -1\n");
                    break;
                default:
                    break;
            }
     
            if(compresult == 0){
                id = sl[i].id;
                break;
            }
        }
     
        return id;
    }
     
     
    int main()
    {
        int id;
        struct student studentlist[MAX_STUDENT_NUM];
     
        scanf(FILENAME, &studentlist[0], MAX_STUDENT_NUM);
        fprint(&studentlist[0], 3);
     
        printf("\n");
     
        printf("lookup foo1\n");
        id = lookup(studentlist, 3, 1, "foo1");
     
        if(id != -1){
            printf("foo1 info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
     
        printf("\n");
     
        printf("lookup bar2\n");
        id= lookup(studentlist, 3, 2,"bar2");
     
        if(id !=-1){
            printf("bar2 info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
     
        printf("\n");
     
        printf("lookup 111-1111-1111\n");
        id = lookup(studentlist, 3, 3, "111-1111-1111");
     
        if(id !=-1){
            printf("telnum(111-1111-1111) info:\n");
            print_by_id(studentlist, MAX_STUDENT_NUM, id);
        }
    }
    pour plus d info regarde le MAN, ici par exemple
    encore merci
    je vais essayer de me debrouiller a partir de ca

  9. #9
    Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    probleme resolu
    encore merci a tous

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Points : 5
    Points
    5
    Par défaut
    peux tu nous mettre ton code corrigé.

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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