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 :

strlen et strcpy non reconnu avec string.h


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Points : 44
    Points
    44
    Par défaut strlen et strcpy non reconnu avec string.h
    Bonjour,

    je travaille sous Visual C++ 6

    voici ce qui pose probleme:
    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
     
    #include <iostream.h>
    #include <string.h>
    #include "stdafx.h"
    #include "joueur.h"
     
    istream&  operator>>(istream& f, joueur& j)
    {
    	cout<<"Pseudo du joueur :"<<endl;
    	char * tmp = new char[50];
    	f>>tmp;
    	j.pseudo = new char[strlen(tmp)+1];
    	strcpy(j.pseudo, tmp);
    	delete[] tmp;
    	return f;
    }
    apres la compilation, il est indiqué que strlen et strcpy sont indéclarés
    que dois-je faire?

    nb : je ne souhaite pas utilisé le type string

    merci d'avance

  2. #2
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Moi je n'ai pas ce prob...
    A par les erreurs liées au manque de déclaration et de tes deux entêtes...
    Tu dois peut-être avoir un problème:
    http://www.cplusplus.com/ref/cstring/

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    je travaille sous Visual C++ 6
    Il me semble donc que tu es dans le premier forum.
    Microsoft Visual C++ ne supporte correctement le C++ que depuis la version 7.1.
    Ensuite ton code est un mélange assez moche de C et de C++.
    Boost ftw

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Points : 44
    Points
    44
    Par défaut
    Merci de vos réponses.

    Citation Envoyé par loufoque
    Ensuite ton code est un mélange assez moche de C et de C++.
    Je sais, mais c'est la correction donnée par un de mes profs de licence...

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par wolflinger
    Merci de vos réponses.

    Citation Envoyé par loufoque
    Ensuite ton code est un mélange assez moche de C et de C++.
    Je sais, mais c'est la correction donnée par un de mes profs de licence...
    Quelle horreur. Il pourrait être intéressant d'aller lui en toucher 2 mots, car ce code est l'exemple de: "ça marche mais il ne faut pas le faire" en c++. Pas très pédagogique me semble-t-il...
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Bonjour,

    Citation Envoyé par wolflinger
    #include <iostream.h>
    #include <string.h>
    #include "stdafx.h"
    #include "joueur.h"
    la dedans deja je ferais comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include "stdafx.h"          //en-tete précompilé, je crois qu'il vaut mieux l'importé en premier
    #include <iostream>       //on ne met plus les ".h" 
    #include <string>
    #include "joueur.h"
    "vaste programme"

  7. #7
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par BainE
    Juste pour ici ce serait plutôt <cstring>, notre ami n'utilisant malheureusement pas les std::string .
    Fiquet
    - FAQ SDL
    - FAQ C++

  8. #8
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Fiquet
    Citation Envoyé par BainE
    Juste pour ici ce serait plutôt <cstring>, notre ami n'utilisant malheureusement pas les std::string .
    Si, il y en a besoin pour strlen() (et peut-être strcpy(), mais je ne suis pas sûr). En revanche, pas besoin de #include <cstring> puisqu'il n'utilise pas la classe CString.
    Sinon, en effet, il faut que le #include "stdafx.h" soit la première ligne du fichier .cpp. Mais si tu inclus ce fichier, cela signifie que tu utilises la MFC, ce qui n'est pas forcément une bonne chose, mais c'est une autre histoire.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  9. #9
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Justement, strlen() et compagnie sont des reliques du C, à savoir que les bibliothèques c se trouvent en C++ sous les noms <cxxx> au lieu de <xxx.h>. Inclure <string> serait utile s'il utilisait les std::string et toutes ses fonctions membres, etc.

    Voir ici : http://c.developpez.com/faq/cpp/?pag...ng_et_string_h
    Fiquet
    - FAQ SDL
    - FAQ C++

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    nb : je ne souhaite pas utilisé le type string
    Alors n'utilise pas C++
    Il est totalement tordu d'utiliser des pointeurs vers une séquence de char terminée par NULL pour utiliser des chaînes de caractères étant donné que tu disposes d'outils beaucoup plus pratiques, puissants et sûrs.
    Boost ftw

  11. #11
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Fiquet
    Justement, strlen() et compagnie sont des reliques du C, à savoir que les bibliothèques c se trouvent en C++ sous les noms <cxxx> au lieu de <xxx.h>. Inclure <string> serait utile s'il utilisait les std::string et toutes ses fonctions membres, etc.

    Voir ici : http://c.developpez.com/faq/cpp/?pag...ng_et_string_h

    En effet, autant pour moi. Je me retire...
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  12. #12
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    en tout cas ton prof a vraiment l'air de savoir de quoi il parle (je me marre)...

    enfin c'est pas le premier ni le dernier, par contre pour pouvoir utiliser strcpy (qu'il serai bon de remplacer par un strncpy d'ailleurs...) et autre fonction C (qui n'ont absolument rien a faire dans du C++ au passage), il ne faut pas faire un include de "stdlib.h" ???
    "vaste programme"

  13. #13
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par BainE
    en tout cas ton prof a vraiment l'air de savoir de quoi il parle (je me marre)...
    Effectivement ça désole ...

    Citation Envoyé par BainE
    enfin c'est pas le premier ni le dernier, par contre pour pouvoir utiliser strcpy (qu'il serai bon de remplacer par un strncpt d'ailleurs...) et autre fonction C (qui n'ont absolument rien a faire dans du C++ au passage), il ne faut pas faire un include de "stdlib.h" ???
    Non les fonction de manipulation de chaîne de caractères C sont définies dans <string.h> (ou <cstring> pour l'équivalent "C++")
    Fiquet
    - FAQ SDL
    - FAQ C++

  14. #14
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    pour pouvoir utiliser strcpy [...] il ne faut pas faire un include de "stdlib.h" ???
    man strcpy me dit qu'il suffit de <string.h>

    apres la compilation, il est indiqué que strlen et strcpy sont indéclarés
    Tu as liée la bibliothèque standard C ?
    Boost ftw

  15. #15
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Citation Envoyé par r0d
    Mais si tu inclus ce fichier (stdafx), cela signifie que tu utilises la MFC, ce qui n'est pas forcément une bonne chose, mais c'est une autre histoire.
    Pas nécessairement. L'utilisation des en-têtes précompilés ne se limite pas aux projets MFC.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 72
    Points : 44
    Points
    44
    Par défaut
    Encore merci à tous de vos réponses, c'est vraiment sympa

    Citation Envoyé par r0d
    Sinon, en effet, il faut que le #include "stdafx.h" soit la première ligne du fichier .cpp. Mais si tu inclus ce fichier (, cela signifie que tu utilises la MFC, ce qui n'est pas forcément une bonne chose, mais c'est une autre histoire.
    L'erreur venait bien de là, je l'ai placé en 1ere ligne et c'est tout bon.
    Si je l'utilise c'est parcequ'il se met automatiquement et que "la" prof nous a dis de toujours l'utiliser...(sans explication bien sûr et je pense que c'était pas la peine d'en demander....)

    Pour en revenir à cette prof, le plus drôle c'est qu'elle n'arrête pas de nous dire "PENSEZ OBJET", "le C++ n'est pas du C"

    Encore merci et à bientôt

  17. #17
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Et bien dis-lui gentiment qu'il y a une bibliothèque standard en C++ qiu est la pour aider à bien des choses, plus facilement qu'en C ! Enfin j'espère pour elle qu'elle en connaît l'existence mais c'est dommage de commencer l'enseignement du C++ sans passer par ceci je trouve (erreur qui s'est faite pour moi aussi d'ailleurs ).
    Fiquet
    - FAQ SDL
    - FAQ C++

  18. #18
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu fais tes études où ?
    Boost ftw

Discussions similaires

  1. [Disque Dur] Disque non reconnu avec nouveau boitier externe
    Par halawak dans le forum Périphériques
    Réponses: 11
    Dernier message: 07/08/2012, 19h54
  2. Réponses: 4
    Dernier message: 13/10/2010, 16h28
  3. fonction non reconnue avec des imports
    Par kowalski-m dans le forum Général Python
    Réponses: 5
    Dernier message: 14/11/2009, 10h47
  4. Problème de base de données ACCESS non reconnue avec ASP
    Par Therambok dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/01/2009, 17h38
  5. Champ Blob non reconnu avec ADO
    Par Ben_Le_Cool dans le forum Bases de données
    Réponses: 6
    Dernier message: 30/10/2006, 14h34

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