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 :

[Débutant]Initialiser une chaine de caractères


Sujet :

C

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

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [Résolu][Débutant]Initialiser une chaine de caractères
    bonjour,

    ma question est comment initialiser correctement une chaine de caractères.
    J'utilise les 2 methodes ci-dessous mais est-ce ce qu'il convient de faire.

    1ere méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *str;
    str = "ma_chaine\0"; // le car null est-il nécessaire?
    2eme methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char str[255];
    strcpy( str, "ma_chaine");
    Si je veux pas utiliser 'strcpy' quelle méthode utiliser?[/b]
    Le pointeur fou...

  2. #2
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    1) le caractere null n'est pas necessaire

    2) tu n'es pas obligé de faire strcpy mais le résultat est différent.
    - dans le premier cas, tu initialises un pointeur de chaine
    - dans le deuxieme cas, tu initialises une tableau de caractere

    le tout est de savoir ce que tu veux en faire
    il y a du linge sur la corde à linge

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 304
    Points : 253
    Points
    253
    Par défaut
    oui c'est vrai,
    la 1er méthode implique que tu pointes vers une chaine constante de caractères , autrement dit il t'est impossible de la modifier a moins d'utiliser une option du compilateur (fwritable strings). En d'autres termes il te serra impossible de faire str[1]='a'

    La 2eme méthode est une méthode correcte qui te permettra de faire des modifications sur la chaine, par contre je te conseille d'utiliser strncpy
    pour évfiter les effets de bords.
    Si tu veux faire autremetn tu peux faire:
    char str[255];
    str[0]='a';
    str[1]='b';
    str[2]='\0';
    mais honnetement la fonction str(n)cpy est appropriée pour ce genre d'utilisation
    TOUT CE QUI EST VRAISEMBLABLE N'EST PAS FORCEMENT VRAI . MEFIEZ VOUS

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    merci
    Le pointeur fou...

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

Discussions similaires

  1. Initialiser une chaine de caractère
    Par lutin06 dans le forum C
    Réponses: 27
    Dernier message: 11/03/2007, 12h39
  2. Réponses: 3
    Dernier message: 26/12/2006, 09h13
  3. Réponses: 9
    Dernier message: 19/10/2006, 17h02
  4. [Débutant]Afficher une chaine de caractères
    Par cyrille2k5 dans le forum Oracle
    Réponses: 3
    Dernier message: 02/06/2006, 16h04
  5. [Débutant]Encodage d'une chaine de caractères
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/08/2004, 16h47

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