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 :

Malloc pour sprintf


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut Malloc pour sprintf
    Bonjour,
    j'ai regardé comment me servir d'un sprintf mais je n'arrive pas à l'utiliser correctement
    truc tout bete j'avais oublié d'allouer de la mémoire à ligne mais il n'accepte pas mon allocation
    j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main()
    {
       char* ligne;
       ligne = (char *)malloc(sizeof(char)*256);
       ligne="bonjour";
       int a=2;
       sprintf(ligne,"%d",a);
       printf("%s",ligne);
    }
    mais il me marque j'ai mal ecrit le malloc

  2. #2
    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 Sylar44 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main()
    {
       char* ligne;
       ligne = (char *)malloc(sizeof(char)*256);
       ligne="bonjour";
    Tu penses faire quoi là ? Tu crois vraiment qu'on peut copier une chaine avec = ? Avant d'utiliser des concepts un peu avancés comme l'allocation dynamique, il faut commencer par maitriser les bases du C, comme le traitement des chaines de caractères, par exemple... Relis ton livre de C.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    ben si je fais ca, ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ligne[10]="bonjour";
    c'est juste que je veux utiliser des pointeurs de caractère à la place et que ca fait longtemps que je n'ai plus fait de C

    j'ai rajouté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(ligne,"%s %d",ligne,a);
    et là ca marche mais je veux des char* pas des tableaux de char

  4. #4
    Membre chevronné Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Par défaut
    Citation Envoyé par Sylar44 Voir le message
    et là ca marche mais je veux des char* pas des tableaux de char
    Quesque tu veut dire pas ceci ????

    mais le STRING dans C c'est pas le "char *".

    le char * est un pointeur sur un caractère !!!!!!

    et avec malloc, on alloue un zone de taille X a partir de cette addresse, ainsi, en faisant par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char *p = malloc(X);
    strcpy(p, "abcd");
    printf("%c", p+1);
    il m'affiche le b.


    Pour mois un char * est un tableau aussi ............


    Donc, en resumer, un tableau de caracteres est une chaine de caracteres !!!!!!!!!!!

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par cmoibal Voir le message
    Donc, en resumer, un tableau de caracteres est une chaine de caracteres !
    Uniquement si le tableau est termine par '\0'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char arr[3] = { 'a', 'b', 'c' };
    n'est pas une chaine de caractere.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par DaZumba Voir le message
    Uniquement si le tableau est termine par '\0'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char arr[3] = { 'a', 'b', 'c' };
    n'est pas une chaine de caractere.
    +1

Discussions similaires

  1. malloc pour un tableau 2D
    Par TANITE dans le forum Débuter
    Réponses: 8
    Dernier message: 04/06/2013, 20h51
  2. Réponses: 13
    Dernier message: 22/04/2013, 18h25
  3. malloc pour des grandes tailles mémoires
    Par SuperSeb95 dans le forum C
    Réponses: 9
    Dernier message: 21/05/2012, 14h40
  4. Fonction malloc pour allocation
    Par Maria1505 dans le forum C
    Réponses: 6
    Dernier message: 06/11/2006, 16h38
  5. Réponses: 4
    Dernier message: 21/03/2006, 04h55

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