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 de recopie avec strncpy


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut probleme de recopie avec strncpy
    bonjour à tous,

    pour les besoins de mon programme je dois recopier une chaine et mon probleme semble venir de strncpy

    voici 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
     
    int events_server(int argc, char **argv)
    {
    	aServer *serv;
     
            printf("ARGV: %s|%s|(%s)\n", argv[1], argv[5], argv[4]);
    	strncpy(serv->name, argv[1], HOSTLEN);
    	strncpy(serv->sid, argv[4], SIDLEN);
    	strncpy(serv->desc, argv[5], REALLEN);
     
    	serv->uptime = time(NULL);
    	printf("NEWSERVER: %s|%s|(%s)\n", serv->name, serv->desc, serv->sid);
    	return 0;
    }
    le résultat est le suivant:

    ARGV: irc.dirty-system.net|welcome in hell|(97K)
    NEWSERVER: irc.dirty-system.net||()
    lors de l'affichage avec printf je peux voir que ces elements existent bien mais une fois que j'essai de les recopier dans des variables de ma structure ca ne fonctionne plus

    voici la structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct servinfo
    {
    	char name[HOSTLEN+1];
    	char desc[REALLEN+1];
    	char sid[SIDLEN+1];
     
    	time_t uptime;
    } aServer;
    je vous remerci pour votre aide

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hoa,

    Il faut tout de même penser à initialiser les pointeurs.

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Ce que veut dire droggo, c'est que ici :
    tu as bien un pointeur sur une structure mais derrière ce pointeur, il n'y a.

    Ce que tu peux faire :

    Pour pas trop bouger ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    aServer MaStructure;
    aServer *serv = &MaStructure;
    Ou même mieux, pour supprimer ce pointeur inutile (mais il faut remplacer serv-> par serv. dans ton code) :
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    ou alors je n'utilise pas strcnpy et j'initialise mes champs avec =

  5. #5
    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
    Non.
    Il est interdit d'écrire : tableau = quelque chose

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    oui j'viens de voir ca

    comment ce fait il que ds ce code l'affection fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	Server *serv;
     
    	serv = scalloc(sizeof(Server), 1);
     
    	serv->name = sstrdup(name);
    	serv->desc = sstrdup(desc);

Discussions similaires

  1. probleme avec strncpy
    Par lrgtk dans le forum C
    Réponses: 14
    Dernier message: 08/01/2010, 22h40
  2. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  3. [Kylix] Probleme de séparateur avec Kylix2 ?
    Par jeanphy dans le forum EDI
    Réponses: 4
    Dernier message: 10/02/2003, 16h41
  4. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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