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 :

problème avec strcpy(prog C sous linux)


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Points : 61
    Points
    61
    Par défaut problème avec strcpy(prog C sous linux)
    Salut !
    J'ai écris deux méthodes une pour insertion d'un élément dans un tableau et l'autre vérification d’existence, je programme sous linux quand je compile avec gcc -c nomfinchier.h
    j'ai les erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TS.h: In function ‘insertTS’:
    TS.h:20:3: attention : passing argument 1 of ‘strcpy’ makes pointer from integer without a cast [enabled by default]
    /usr/include/string.h:128:14: note: expected ‘char * __restrict__’ but argument is of type ‘char
    voici mon 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
     
    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    #include<math.h>
    typedef struct dictionary { 
     
    			    char *entite;
    			    char  *type;
    			    } elt;
     
    elt TS[1000];
     
    int nb=0;
     
    //fonction d'insertion dans la table de symbole
    void insertTS( char *entite, char type,int nb_sym) {
     
     
    		strcpy(entite,TS[nb_sym].entite);
    		strcpy(type,TS[nb_sym].type);
     
     
     
     
     
    }
     
     
     void lookup(char *entite,char *type) {
     
    	int indice=((7 *(int)entite+11)%800)%1000;
     
              if(TS[indice].entite==NULL && strcmp(TS[indice].entite,entite))
                  insert(entite,type,indice);
              else
               printf("cette entite existe deja \n");
     
    }

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Bonjour,

    Si tu regarde le man de strcpy, tu verras qu'il nécessite un char * en premier argument et non un char comme ton erreur de compilation te l'indique.

    Or lors de ton deuxième strcpy, strcpy(type,TS[nb_sym].type);, type est un char et non un char *

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 482
    Points : 13 680
    Points
    13 680
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par khadi8 Voir le message
    je compile avec gcc -c nomfinchier.h
    Je te conseille très fortement de compiler avec des options supplémentaires, pour activer un maximum de message d'alertes de ton compilateur. Cela t'aidera à déceler plus tôt des problèmes dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -c nomfinchier.h -Wall -Wextra
    Si tu es exigeant, tu peux aussi rajouter -pedantic.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indice=((7 *(int)entite+11)%800)%1000;
    Cette ligne est louche, que souhaites-tu faire exactement ?

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    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 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indice=((7 *(int)entite+11)%800)%1000;
    Cette ligne est louche, que souhaites-tu faire exactement ?
    Elle est même clairement fausse, le %1000 étant toujours inutile.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 580
    Points
    41 580
    Par défaut
    Compiler un fichier .h, c'est louche également.

Discussions similaires

  1. Problème d'envoi de fax sous Linux CentOS 5.4 avec AvantFAX et HylaFAX
    Par Kiyoshi_Aiko dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 03/02/2011, 14h59
  2. Problème de creation de thread sous linux
    Par xilebo dans le forum POSIX
    Réponses: 4
    Dernier message: 27/10/2004, 09h58
  3. Réponses: 1
    Dernier message: 24/08/2004, 18h10
  4. Problème avec le port série sous Windows XP
    Par didou2dek dans le forum Composants VCL
    Réponses: 6
    Dernier message: 02/09/2003, 19h50

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