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 :

initialisé un char avec une variable


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut initialisé un char avec une variable
    Bonjour,
    j'aimerais faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char * chaine = "mon texte";
    int longueur = strlen(chaine);
    char autreChaine [longueur];
    mais j'ai une erreur comme quoi longueur n'est jamais assigné/utilisé.
    est-ce possible de faire qqchose comme ca ?
    merci

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Mauvais titre, là tu veux créer une tableau sur char d'une longueure qui est celle d'une autre chaine ... déjà pourquoi !?!?
    M'enfin bref ... le mieux serais de passer par une allocation dynamique pour ton tableau.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut
    pour pouvoir concaténer plusieurs char dans un autre char qui sera initialisé avec la somme des longueurs des char.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Hé bien dans ce cas le meilleur moyen serais encore de calculer la longueure de la chaine finale puis d'allouer un espace d'après cette valeur pui de là tu peux faire ta concaténation.

    Créer un tableau static d'après des valeurs dynamiques est même interdit par C90 je crois !

    J'ai compilé en vitesse avec -pedantic et voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c:9: attention : ISO C90 forbids variable-size array «autreChaine»
    main.c:9: attention : unused variable «autreChaine»
    donc je pense que tu devrais pas chercher plus loin et pencher pour l'allocation dynamique, c'est même mieux ainsi
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par shawty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char * chaine = "mon texte";
    int longueur = strlen(chaine);
    char autreChaine [longueur];
    La fonction strlen retourne un type size_t et non pas int !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    size_t longueur = strlen(chaine);
    et pour t'en convaincre: strlen
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre chevronné
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Le problème vient du fait que le compilateur ne va pas exécuter la fonction strlen() pour calculer la taille de ton autre chaîne!!! Donc, il dit, à juste titre, que ca ne peut pas se compiler...

    Tu as 2 solutions:
    1- Si tu connais déjà la taille de ta chaine (ce qui est le cas dans le code que tu nous montres), tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char autreChaine[10];
    2- Si tu ne la connais pas a priori ou, que pour une raison quelconque tu ne veux pas la fixer en dur, tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char * chaine = "mon texte";
    char *autreChaine;
     
    autreChaine = malloc (strlen(chaine) + 1);
    Une petite remarque, si je puis me permettre...
    L'intitulé du post n'était pas clair

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Par défaut
    avec un malloc c'est parfait merci

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par shawty
    est-ce possible de faire qqchose comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char chaine[] = "mon texte";
    char autreChaine [sizeof chaine];
    En en plus, la taille est bonne !

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char chaine[] = "mon texte";
    char autreChaine [sizeof chaine];
    En en plus, la taille est bonne !
    Hum pas bête du tout ca ... pourquoi j'y pense jamais
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Rafraichissement avec une variable
    Par niceday dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 10h08
  2. Réponses: 5
    Dernier message: 25/06/2005, 11h35
  3. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  4. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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