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

MFC Discussion :

Problème d'écriture dans un tableau


Sujet :

MFC

  1. #1
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut Problème d'écriture dans un tableau
    Salut à tous,

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t phrase[] = {'-3', '0'};
    Lors du passage sur cette ligne, en debug, phrase[0] et phrase[1] prennent respectivement pour valeur : 11571 et 48

    Question: Il ne devrait pas avoir -3 et 0 comme valeur

    Je constate le même phénomène de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    wchar_t phrase[1];
     
             phrase[0] = '-3';
             phrase[1] = '0';
    N'y aurait-il pas un problème de type ?

    Ou alors un problème de taille (je pense au -3) ou quelque chose de toute facon

    Merci de vos réponses

  2. #2
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    pour la deuxième mnière c pas phrase[1] mais phrase[2]

    en revanche est ce aque tu as mis le point d'arret sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t phrase[] = {'-3', '0'};
    si c'est le cas place le à la ligne suivante et dit moi ce que ca donne

  3. #3
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Je retrouve malheureusement la même chose:

    11571 et 48,

    je vien de constater que 48 est le code ASCII de 0

    Quel est donc cette chose qui semble stocher le code ASCII d'une valeur au lieu de la valeur elle même ?

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Hi !

    dis : comment affiches-tu / vérifies-tu le contenu de ton tableau ?

  5. #5
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    en debug, on voit les valeurs

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu veux stocker un caractère ? c'est bien ca ?

    sache donc que ce qui est stocké en mémoire est bien le code ascii

    par contre , pour '-3', il y a DEUX caractères !

    que veux-tu faire ?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    sans m'avancer - je suis pas du tout spécialiste de C++ ..

    caractères et entiers sont proches en C/C++
    par exemple :
    int i = '0';
    char c = '0';
    printf("%c %c | %d %d", a, b, a, b)

    devrait te donner:
    0 0 | 48 48

    ton problème semble juste venir du formatage en mode debug

  8. #8
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Je veux mettre la valeur -3 dans l'occurence 0 du tableau phrase[]

    Sinon je suis d'accord avec toi quand tu dit que ce sont les valeur ASCII qui sont stockées en mémoire,

    Mais si je fais par exemple ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int tabInt[] = {0, 2, 3, 4}
    et pendant le debug si je tape ceci:

    après etre passer sur la premiere ligne,

    je vois bien 2 comme valeur et pas 50 ...

    Alors que dans mon cas, je ne vois que les valeurs ASCII
    Pourquoi c'est différent ?

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comme le dit CTux,

    si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i=48;
    printf("%d",i); // 48
    printf("%c",i); // 0
    avec %d on voit un entier, avec %c on voit le caractere qui est représenté par cette valeur en ascii
    C'est juste une facon d'interpréter la donnée en mémoire

    Par contre, pour ton problème, ce que j'ai oublié de dire, c'est que pour des wchar_t, il faut utiliser la macro L
    à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t phrase[] = {L'-3', L'0'};

  10. #10
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Comme tu l'as dit il y a 2 caractère dans -3,

    Si je fais comme tu vien de me l'indiquer,
    Toujours en debeug je constate qu'il n'y a que le '-' de stocké et pas le '-3'

    Donc du coup le problème est devenu différents, à savoir:

    Comment faire tenir deux caractères dans une seule occurence d'un tableur wchar_t ?

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    int tabInt[] = {0, 2, 3, 4}

    c'est normal ton histoire, il s'agit là d'entiers ...
    le debugger na va pas te les interpréter en caractères ...

    par contre (c) à raison : tu peux pas loger -3 dans UN caractère : tu auras un warning et à l'exe de ton prog seul le '-' sera affiché

    sur ce bonne nuit, ++ :)

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Quelque chose me choque dans :

    wchar_t phrase[] = {'-3', '0'};
    '0' C est bien le caractere 0
    '-3' n est pas un crarctere, c'est soit entier signé (-3) soir une chaine "-3"

  13. #13
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Oulala, c'est le souk cette histoire,

    En fait je vous explique la chose:

    J'ai une fonction à laquelle doit être passé en seconde paramtère un const wchar_t*, et je ne peux malheureusement pas changer ceci ....

    Donc je commence par déclarer un tableau ce wchar_t, comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t phrase[] = {L'-3', L'0'};
    puis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const wchar_t* pointTabPhrase = phrase;
    Tout ceci passe sans aucun accro à la compile (ni erreur ni warning),
    Tout irait bien si je n'avais pas besoin de passer une valeur négative dans l'occurence 0 du tableau phrase, seulement je n'ai pas le choix .....

    J'ai l'impression de me diriger vers une impasse

    Qu'en pensez-vous ?

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    la question est de savoir si tu veux passer un caractère ou un nombre

    si c'est un caractère, alors c'est pas compliqué, si ca prend trois caractères, il faut faire 3 cases !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t phrase[] = {L'-',L'3', L'0'};

  15. #15
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Je vien de tester ton code, mais malheureusement il ne marche pas,

    Tout passe à la compile mais ma fonction n'a pas l'air de prendre en compte ce que je lui passe

    J'ai bien l'impression d'être obligé de passer le nombre -3 dans l'occurence 0 du tableau....

    C'est possible ?

  16. #16
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Bon eh bien le temps est déja avancé, je romp les rangs,

    Bonne soirée à tous

  17. #17
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par Hokagge
    Je vien de tester ton code, mais malheureusement il ne marche pas,

    Tout passe à la compile mais ma fonction n'a pas l'air de prendre en compte ce que je lui passe

    J'ai bien l'impression d'être obligé de passer le nombre -3 dans l'occurence 0 du tableau....

    C'est possible ?
    si tu veux lui passer un nombre négatif, prends garde , car w_char_t est typé comme un unsigned short, donc nombre NON signé

    le w_char_t sert pour des chaines en UNICODE

    essaye de copier les caractères, avec wcscpy
    sachant que ces deux résultats sont équivalents, à la différence près que le deuxième se termine par un 0 terminateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	wchar_t phrase[] = {L'-',L'3',L'0'};
    	wchar_t phrase2[5];
    	wcscpy(phrase2,L"-30");

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    de toutes facons, tant que tu n'en sauras pas plus sur la fonction à laquelle tu le passes, ca ne sera que du tatonnement

  19. #19
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    La chose que je peux te dire c'est que cette fonction est censée emmetre un son, donc c'est assez facile de voir, ou plutôt d'entendre si ca marche.

    Je vien d'essayer ton code, et c'est toujours pareil
    Il semble tout à fait bon, mais ma fonction ne le prend pas en compte...

  20. #20
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Ohayo !

    une chose parait claire : tu ne peux PAS faire rentrer '-3' dans UN wchar_t.
    montres nous la signature de la fonction que tu appelles, ca simplifieras peut-être les choses ..

Discussions similaires

  1. Problème écriture dans un tableau d'une structure
    Par Sasuke1234 dans le forum MATLAB
    Réponses: 3
    Dernier message: 13/01/2014, 15h24
  2. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  3. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00
  4. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28
  5. problème d'écriture dans la BD
    Par billy_ze_kid dans le forum ASP
    Réponses: 6
    Dernier message: 12/06/2005, 20h30

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