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éclarer le contenu d'un tableau comme char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Par défaut Déclarer le contenu d'un tableau comme char
    Bonjour à tous,

    J'ai un petit problème concernant les tableaux et les caractères. Je m'explique.
    Je souhaite déclarer un tableau, dans lequel sont stockés des caractères.

    J'ai donc déclarer mon tableau comme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {1, 4, A};
    Mais cela genère une erreur --> error C2065: 'A' : undeclared identifier
    Le A n'es pas considéré comme un caractère.

    Il faut que je remanipule mon code de la sorte pour qu'il marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {'1', '4', 'A'};
    Hors le problème, c'est que les données contenue dans le tableau vont être lue d'un fichier, et écrite dans le tableau de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {1, 4, A, 7, D, ...}
    Et il possible d'indiquer que le tableau stock bien des caractère, auquel cas en y écrivant un A il comprendrais que c'est bien un caractère et ne me genererait plus l'erreur, ou faut-il que je trouve un quelconque moyen de recopier le tableau en ajoutant les ' ' à chaque caractère pour indiquer que se sont bien des caractères ??

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Par défaut
    J'ai aussi pensé à déclarer le tableau en long et faire un static_cast derrière mais cela ne change rien du tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    long ReadData[256] = {1, 4, A};
    static_cast<char>(ReadData[i]);

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char ReadData[256] = {1, 4, A};
    Quand tu écris ça tu déclares un tableau qui va contenir les caractères suivant :
    - Le caractère qui a pour code ASCII : 1
    - Le caractère qui a pour code ASCII : 4
    - Le caractère qui est dans la variable A (qui n'existe pas a priori)

    Je ne pense pas que c'est ce que tu recherche.

    Pour affecter un caractère à une variable avec un litteral il faut que ce dernier soit entouré de ' ' :
    Le caractère qui représente 1 s'écrit '1'
    Le caractère qui représente 4 s'écrit '4'
    Le caractère qui représente A s'écrit 'A'

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    avant toute chose, si tu peux utiliser la classe string de la bibliothèque standard à la place de cet horrible tableau de char, ce serait infiniment mieux.

  5. #5
    Membre éclairé Avatar de befalimpertinent
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2007
    Messages : 561
    Par défaut
    Ton problème à plus l'air de se situer à la lecture du fichier. Fais voir les lignes qui s'occupent de cette lecture stp.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 77
    Par défaut
    Concernant les lignes de lecture du fichier, je ne m'en suis pas encore occupé.

    Mais je sais que je vais lire un 1, et que je dois me débrouiller pour que le tableau comprenne que c'est un '1' que je veux,

    D'ailleur si quelqu'un peut m'expliquer comment on fais pour lire un fichier, je sais ne sais pas trop comment on s'y prend.

    Je veux lire un fichier Reference.bin (qui contient par exemple 137B4DF962), je recupere ce contenu, je le range dans un tableau en indiquant que je veux que le 1 soit un caractère, le 3 aussi, le 7 aussi etc .. Et à partir de la j'affiche le code héxa de se caractère avec

    Pour l'instant, mon code complet donne cela :

    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
    17
    18
    #include <iostream>
    using namespace std;
     
    int main(void){
     
    	int i = 0;
    	int var = 0;
    	long size = 3;
     
    	char ReadData[256] = {1, 4, A};
     
    	for (i = 0; i < size; i++){
    		var = ReadData[i];
    		printf("%x", var);
    	}
     
    	return 0;
    }
    Sans compter que la ca ne marche pas à cause du A dans le tableau ^^

    Le size aura après pour valeur la longeur de la donnée que je récupère (par exemple 10 si je lis 137B4DF962).
    Et dans le tableau seront rangés 137B4DF962. Et j'aurais en affichage :
    31333742344446393632 (le code Hexa de chaque caractère).

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 292
    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 292
    Billets dans le blog
    2
    Par défaut
    les tableaux de char c'est du C.
    printf c'est du C.
    On est sur un forum c++.

    Pour la lecture de fichier, tout est dans la FAQ C++ (dans le chapitre sur les flux). Tu devrais d'ailleurs commencer par ça (lire ton fichier dans une string, et les questions que tu te poses maintenant se résolueront comme par magie).

  8. #8
    Membre éclairé Avatar de cynique
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 60
    Par défaut
    Citation Envoyé par Versace31 Voir le message
    Bonjour à tous,

    J'ai un petit problème concernant les tableaux et les caractères. Je m'explique.
    Je souhaite déclarer un tableau, dans lequel sont stockés des caractères.

    J'ai donc déclarer mon tableau comme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {1, 4, A};
    Mais cela genère une erreur --> error C2065: 'A' : undeclared identifier
    Le A n'es pas considéré comme un caractère.

    Il faut que je remanipule mon code de la sorte pour qu'il marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {'1', '4', 'A'};
    Hors le problème, c'est que les données contenue dans le tableau vont être lue d'un fichier, et écrite dans le tableau de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char ReadData[256] = {1, 4, A, 7, D, ...}
    Et il possible d'indiquer que le tableau stock bien des caractère, auquel cas en y écrivant un A il comprendrais que c'est bien un caractère et ne me genererait plus l'erreur, ou faut-il que je trouve un quelconque moyen de recopier le tableau en ajoutant les ' ' à chaque caractère pour indiquer que se sont bien des caractères ??

    Merci d'avance pour votre aide.

    Dis-moi: tu utilise un logiciel pour écrire ton code avec let tableau "ReadData[]"?

    Si oui, je ne comprends pas le problème. Ce logiciel peut ajouter les ' autour des caractères.

    Tu peut aussi écrire:

    char ReadData[256] = "14A6B...";

    En ce cas, le compilateur traitera tous les caractères du fichier comme caractères. Si tu écris:

    char ReadData[256] = { 1, 4, 'A' ... };

    ReadData[0] sera le petit entier 1. Ce n'est pas '1' du tout. '1' != 1.

Discussions similaires

  1. Réponses: 19
    Dernier message: 01/12/2012, 18h56
  2. Réponses: 7
    Dernier message: 03/08/2011, 22h49
  3. Ansistring et tableau de char
    Par rabbi_jaccob dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/12/2004, 11h51
  4. Adresse d'un tableau de char
    Par Trap D dans le forum C
    Réponses: 8
    Dernier message: 23/12/2003, 12h02
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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