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 :

passer lachaine de caractères contenant la portion de texte lue de la fonction fgets


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut passer lachaine de caractères contenant la portion de texte lue de la fonction fgets
    Bonjour a tous,

    Voici mon code et ma question est comment passer le pointeur utilisé dans fgets dans la fonction TabledeHash pour qu'elle soit traitée.Je pense que mes déclaration d'argument ne sont pas très bien puisuqe j'ai : error: expected expression before char

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int TableDeHash(char*tab)
    {
        int i = 0;
        int nombreHache = 0;
        for (i = 0 ; tab != '\0' ; i++)
        {
            nombreHache = tab[i];
        }
        nombreHache %= 100;
        return nombreHache;
    }
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while((fgets(ligne_lue, 80, batch) != NULL)) {...
    if(ligne_lue[0]!='\'') {
                            strcpy(app->preid, ligne_lue);
                            printf("PREID >> %s\n\n",app->preid);
                            keys = TableDeHash(char * ligne_lue);
    ...}

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour, d'après toi, quelle est ton erreur?

    Le copier-coller, est une source d'erreurs.
    Un copier-coller, ça doit se justifier... Deux, c'est un de trop.

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Bonjour l'eternel;

    keys a bien été déclarer en int dans le main, le passage du pointeur en changeant de nom aussi...1)recopier le nom du pointeur dans l'appel de la fonction puis différemment en gardant le type dans la fonction appelée...je chauffe?
    L'erreur est peut être très bête mais je suis encore débutant et tout ne viens pas très vite a mon grand regret.

    Désolé d'être insistant. Je pense que je suis passé a côté d'une notion basique mais j'apprends le C de manière rapide et un peu decousu par manque de temps

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par nysay27 Voir le message
    keys a bien été déclarer en int dans le main, le passage du pointeur en changeant de nom aussi...1)recopier le nom du pointeur dans l'appel de la fonction puis différemment en gardant le type dans la fonction appelée...je chauffe?
    Tu brûles !

    Ton problème est essentiellement une erreur de syntaxe. Le message d'erreur signifie « expression attendue avant "char" » mais le « avant » peut induire en erreur dans ce genre de cas. L'erreur se produit à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                            keys = TableDeHash(char * ligne_lue);

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2015
    Messages : 105
    Par défaut
    Je suis désolé, je ne vois pas.J'ai déjà utilisé une ligne de ce type sans paramètre et cela marchait bien, mais la.C'est dans les paramètres?

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par nysay27 Voir le message
    Je suis désolé, je ne vois pas.J'ai déjà utilisé une ligne de ce type sans paramètre et cela marchait bien, mais la.C'est dans les paramètres?
    En fait, il fallait simplement écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                            keys = TableDeHash(ligne_lue);
    … sans le type. Le type de donnée n'est utilisé que dans le prototype de la fonction, pour indiquer à quoi on est censé s'attendre. Lorsque l'on invoque la fonction par la suite, on passe la donnée elle-même. C'est plus clair avec le prototype d'une fonction plus triviale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int Additionne(int a, int b)
    {
        return a + b;
    }
    … ce qui, à l'usage, donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        resultat = Additionne (5,3);
    On voit bien ici que l'on passe directement les chiffres sans avoir à repréciser qu'il s'agit d'entiers.

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

Discussions similaires

  1. Passer une chaine de caractères contenant '\n'
    Par florent.hascher dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/11/2012, 16h29
  2. passer d'une chaine contenant des espaces a un tableau
    Par flyfrog dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/06/2006, 20h12
  3. Tri sur une chaîne de caractères contenant des nombres
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2006, 11h52
  4. Réponses: 4
    Dernier message: 18/05/2006, 15h54
  5. chaîne de caractères contenant \0
    Par bul dans le forum C++
    Réponses: 11
    Dernier message: 03/03/2005, 16h14

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