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

Windows Discussion :

strcpy_s qui ne veu pas faire son travail!


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut strcpy_s qui ne veu pas faire son travail!
    bonjour je travail avec visual studio 2005
    je dois transferer une chaine de charactere dans une autre
    je pensait utiliser strcpy_s pour le faire
    avant de mettre cette partie de mon code dans une fonction
    tout fonctionnait bie mais une fois dans la fonction
    il na plus voulu transferer la chaine de charactere.

    voici ce quil me donne comme erreur:

    Erreur 1 error C2660: 'strcpy_s' : la fonction ne prend pas 2 arguments

    voici la fonction dans laquelle il est:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    float MeilleurEtudiant(float fNoteFUnEtu, char strNom[10], char strPrenom[10], char cMeillPrenom, char strMeilleur[10])
    {
    	float fMNote = 0; //variable qui doit contenir la note du meilleur élève
    	if (fNoteFUnEtu > fMNote)
    		{
    			fMNote = fNoteFUnEtu;
    			cMeillPrenom = strPrenom[0];
    			strcpy_s(strMeilleur, strNom);
     
    		}
    	return fMNote;
    }

    j'espere que vous pourrez m'aider!
    Merci d'avance!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Points : 179
    Points
    179
    Par défaut
    Bonjour Magellus,

    D'aprés msdn, strcpy_s prend 3 arguments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    errno_t strcpy_s(
       char *strDestination,
       size_t numberOfElements,
       const char *strSource 
    );
    Utilise plutot strcpy

    Bonne journée

    Benjamin

  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 : 61
    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
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Grosbenji Voir le message
    Utilise plutot strcpy
    Pas d'accord, c'est bien de vouloir utiliser les fonctions safe.

    Le paramètre qui te manque est le paramètre N°2 qui est la taille du buffer de destination.

    Cette fonction te garantie que nu copieras jamais plus de caractère que la longueur de ta chaine de caractere source (paramètre 3) ou jamais plus que la taille de ton buffer de destination (paramètre 2)

    Plus d'info ici : http://msdn2.microsoft.com/en-us/lib...a9(VS.80).aspx
    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
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les fonctions "safe" totalement non-portables, dont le comportement par défaut est un plantage immédiat du programme en cas d'erreur...

    Mon conseil: Utilise plutôt strncat() de la bonne façon:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char buffer[10];
    buffer[0] = '\0';
    strncat(buffer, "Une chaîne de caractères", ARRAYSIZE(buffer)-1);

    PS: Es-tu sûr de compiler en C ? Ce message d'erreur ressemble plus aux messages d'erreurs C++ de Visual...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour! Merci pour vos réponse!
    Oui en effet je programme en c++
    Je n'ai pas pensé que sa pourrai porter confusion!

    J'ai tenter de modifier strcpy_s en strcpy comme la suggéré Grosbenji
    Mais un nouveau problème m'est apparu, et je ne crois pas qu'il soit liée a strcpy

    mon compilateur plante lorsque qu'il est rendu à l'appel de cette fonction
    à cause d'une variable qui n'aurai pas été initialiser.
    le problème c'est que je comptais l'initialiser dans la fonction.
    et que lorsque je fait tout ceci dans le main ça fonctionne
    et quand j'essaie de le mettre en fonction ça plante.

    voici ma déclaration de variable:

    char cMeillPrenom; // c'est a cause d'elle que tout plante!
    les autres fonctionnent très bien!

    et voici mon appel de fonction:

    fMNote = MeilleurEtudiant(fNoteFUnEtu, strNom, strPrenom,
    cMeillPrenom, strMeilleur);

    j'ai essayer de passer fMNote en paramettre dans la fonction mais des erreur trop complexe pour mon niveau son apparu!

    merci de votre aide!

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci j'ai résolu mon problème en la passant en référence!

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

Discussions similaires

  1. ShellExecute qui veut pas faire son boulot...
    Par giloutho dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 31/08/2005, 11h49

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