String et Char
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

String et Char



  1. #1
    DADYCOKE

    String et Char


    ------

    Bonjour, voila j'ai un tableau de caractere comme ceci
    Code:
    unsigned char Tab[4] = {0};
    Tab[3] = '\0'; // pour pouvoir plus tard afficher en chaine comme ceci
    printf("%s \n", Tab);
    j'aimerais savoir si il etait possible de faire une fonction qui retourne un string de ce genre

    Code:
    return Tab // le meme Tab qu'en haut

    -----

  2. #2
    DADYCOKE

    Re : String et Char

    quand j'essai ca, j'ai une eurreur du type
    invalide conversion from unsigned char to const char*

  3. #3
    Chanur

    Re : String et Char

    Bonjour,

    Il manque un peu d'informations ...
    Le message "invalid conversion from unsigned char to const char*" ne peut pas se produire sur la ligne "return Tab" puisque Tab est de type "unsigned char *" et non "unsigned char". Ça aurait un sens si tu retournait Tab[0] ou *Tab ...

    D'autre part, si le tableau Tab est déclaré dans la fonction, c'est une variable automatique, c'est à dire allouée à l'entrée de la fonction et libérée à la sortie.
    Donc, ta fonction retournerait un pointeur vers une zone de mémoire non allouée, ce qui est très très mauvais (cette zone mémoire contient effectivement ta chaîne mais sera modifiée dès que tu appelleras une autre fonction).

    Pour retourner un pointeur vers une zone mémoire, il faut que son allocation perdure à la fin de la fonction
    - soit en la déclarant static : static unsigned char Tab [4];
    - soit en la déclarant en dehors de la fonction (variable globale)
    - soit en l'allouant dynamiquement : unsigned char * Tab = malloc (4);

    Mais il ne faut jamais retourner l'adresse d'une variable automatique.

    A+
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  4. #4
    DADYCOKE

    Re : String et Char

    merci de m'avoir répondu

    j'ai fais une eureur en copiant l'eureur . voila
    invalide conversion from unsigned char* to const char*
    la j'essaie de testé ca pour transformé en "vrai" string le tableau de char

    stringstream ss;
    string lestring;
    for(i=0;i<tablen;i++){
    ss.str("");
    ss << Tab[i];
    lestring += ss.str();
    }

    return lestring;
    Dernière modification par DADYCOKE ; 25/02/2013 à 14h12.

  5. A voir en vidéo sur Futura
  6. #5
    Chanur

    Re : String et Char

    Dans ton dernier exemple, il n'y a plus de problème avec le return : cette fois tu retourne un objet, et il sera recopié lors de l'affectation resultat = fonction (...);
    C'est un peu lourd (de recopier l'objet), mais ça doit marcher.

    Pour transformer un tableau de char en string, il existe un constructeur string (const char* s) prévu pour.
    Voir classe string.

    Sinon, le fait de retourner un pointeur vers une chaîne est parfaitement correct, tant que la chaîne reste allouée.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  7. #6
    Dlzlogic

    Re : String et Char

    Petit avis personnel, pourquoi utiliser des trucs compliqués du C++ alors que c'est relativement basic en C, par exemple
    Code:
    char *FonctEss(int MAX)
    {
      if (MAX > 127)
      {
        printf("ERREUR\n");
        return NULL;
      }
      static LaChaine[128];
      int M=20;
      for (int i = 0; i<M; i++)
      {
        LaChaine[i] = i + 48;
      }
      LaChaine[M]='\0';
      return LaChaine;  
    }
    
    // utilisation, supposons LeString déclaré
      LeString=string(LaChaine);   // à la syntaxe près

Discussions similaires

  1. char rc
    Par invite316acf12 dans le forum Électronique
    Réponses: 10
    Dernier message: 29/07/2010, 22h56
  2. [C]-Conversion Int -> Char, Float -> Char, ...
    Par jorg1n dans le forum Électronique
    Réponses: 2
    Dernier message: 25/06/2008, 11h05
  3. probleme String
    Par ABN84 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 25/05/2007, 12h24
  4. String c
    Par invitea121f130 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 13/03/2007, 05h11
  5. cosmic string
    Par invite73114de8 dans le forum Archives
    Réponses: 11
    Dernier message: 01/02/2006, 12h37