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 :

Probleme en c


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut Probleme en c
    j'ai un probleme sous le langage c

    j'essaye de cree un programme qui lit un texte contient : var a:integer;

    et qui me donner l'identificateur a et le type aussi

    c'est un programme formé pour un exemple simple je vais le generalise ms le probleme et pas claire pour moi j'ai besoin de vous mes amis voila le code :

    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
    #include<stdio.h> 
    #include<conio.h> 
    #include<string.h> 
    FILE *pf; 
    typedef struct element{ 
    char idf[10]; 
    char type[15]; 
    int valeur; 
    } point; 
    point tds[20]; 
     
    int main() 
    { 
    char sym; 
    char mot[8]=""; 
    int i=0,j=0; 
     
    pf=fopen("c:/test.txt","r"); 
    sym=fgetc(pf); 
    while (sym!=EOF) 
    { 
    while (sym!=' ') 
     
    { 
     
    mot[i]=sym; 
    i++; 
    sym=fgetc(pf); 
    } 
     
    if(strcmp(mot,"var")==0) 
    { 
    sym=fgetc(pf); 
    memset(mot,0,sizeof(mot)); 
    } 
    i=0; 
    while(sym!=':') 
    { 
    mot[i]=sym; 
    i++; 
    sym=fgetc(pf); 
    } 
     
    strcpy(tds[0].idf,mot); 
    printf("%s\n",tds[0].idf); 
    memset(mot,0,sizeof(mot)); 
    i=0; 
     
    while (sym!=';') 
    { 
    sym=fgetc(pf); 
    mot[i]=sym; 
    i++; 
    } 
     
    strcpy(tds[0].type,mot); 
    printf("%s",tds[0].type); 
    } 
    }
    il me signale que le probleme est sur la ligne : mot[i]=sym;

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Le tableau "char mot[6]" contient 6 cases et le mot "integer" contient 7 lettres.
    Votre tableau devrait contenir au moins 8 case "char mot[8]". C'est-à-dire 7 cases pour les 7 lettres et une case à la fin pour le '\0'.

    De plus dans votre exemple vous bouclez jusqu'au caractère ';', et je ne le vois pas dans votre fichier texte.

  3. #3
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Bonjour.

    Le tableau "char mot[6]" contient 6 cases et le mot "integer" contient 7 lettres.
    Votre tableau devrait contenir au moins 8 case "char mot[8]". C'est-à-dire 7 cases pour les 7 lettres et une case à la fin pour le '\0'.

    De plus dans votre exemple vous bouclez jusqu'au caractère ';', et je ne le vois pas dans votre fichier texte.

    merci moldavi pour ta reponse, à propos de mot[8] je l'ai fait mais meme probleme à ce niveau;et pour le ';' dans le fichier j'ai oublier de l'ecrire

    reste le meme probleme : erreur d'execution et la ligne :
    mot[i]=sym; devient bleu????

  4. #4
    Expert confirmé
    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
    Par défaut
    Le problème :
    Une fois qu'il a lu le ; il retourne au while (sym!=EOF) avec sym ==';' (et i n'a pas été remis à 0 !). Du coup, il continue. Il fait alors le while (sym!=' ') jusqu'à ce que le buffer mot soit en dépassement et alors il plante.

    Comme tu as dit que tu voulais ensuite généraliser, je pense que tu dois y réfléchir dès maintenant et adopter une structure de ton programme qui permette une extension. Sinon, tu arriveras bien sûr à faire tourner cet exemple, mais ça ne te servira pas beaucoup pour la suite.

  5. #5
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 35
    Par défaut
    Citation Envoyé par diogene Voir le message
    Le problème :
    Une fois qu'il a lu le ; il retourne au while (sym!=EOF) avec sym ==';' (et i n'a pas été remis à 0 !). Du coup, il continue. Il fait alors le while (sym!=' ') jusqu'à ce que le buffer mot soit en dépassement et alors il plante.

    Comme tu as dit que tu voulais ensuite généraliser, je pense que tu dois y réfléchir dès maintenant et adopter une structure de ton programme qui permette une extension. Sinon, tu arriveras bien sûr à faire tourner cet exemple, mais ça ne te servira pas beaucoup pour la suite.
    genial diogene je vous remercié c'est reglé, j'ai oublier la premiere while(sym!=EOF)

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

Discussions similaires

  1. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  2. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

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