CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Question langage C

Woap
Woap
Niveau 10
27 mars 2016 à 17:23:56

Bonjour,

J'ai un petit problème avec ces fichus pointeurs [[sticker:p/1kki]]

J'ai une structure :

typedef struct element 
{
    void  *ptr ;		
    len_t len ;			
} element ;

char *texte = "salut";
	element donnee;
	donnee.ptr = &texte;
	donnee.len = strlen(texte);

Je sais comment récuperer tout le contenu du pointeur à l'aide d'un cast :

printf("Texte : %s \n",*(char**)donnee.ptr);

Cependant il me faut une méthode pour récupérer juste un caractère dans ce texte.

printf("1er caractere : %c \n",*(char**)donnee.ptr[0]);

Ce code ne fonctionne pas et je vois pas comment faire :(

Je vous remercie d'avance !

Candystand
Candystand
Niveau 10
27 mars 2016 à 17:57:52

Pourquoi pas tout simplement:


typedef struct element 
{
    void  *ptr ;      
    len_t len ;           
} element ;

char *texte = "salut";
  element donnee;
  donnee.ptr = (void *)texte;
  donnee.len = strlen(texte);
Woap
Woap
Niveau 10
27 mars 2016 à 19:26:24

Le 27 mars 2016 à 17:57:52 Candystand a écrit :
Pourquoi pas tout simplement:


typedef struct element 
{
    void  *ptr ;      
    len_t len ;           
} element ;

char *texte = "salut";
  element donnee;
  donnee.ptr = (void *)texte;
  donnee.len = strlen(texte);

Ça revient au même, je ne peux toujours pas récupérer le premier caractère de mon texte :

printf("1er caractere : %c \n",*(char**)donnee.ptr[0]);
Candystand
Candystand
Niveau 10
27 mars 2016 à 20:00:53

Essaye alors de stocker ton ptr dans un char * avant le printf

moxo75
moxo75
Niveau 6
27 mars 2016 à 20:19:29

Pour stocker ton char* dans le ptr :
donnee.ptr = (void*)texte;

"Texte" étant déja un pointeur sur char pas besoin de donner son adresse il faut juste le caster en void *.

Ensiute our afficher donnée.ptr:
printf("%s\n"n (char *)donnee.ptr);
%s prend en paramètre un char* donc tu le cast en char* et non en char** en plus texte est un char* donc c'est logique.

Pour afficher le premier char il suffit donc finalement de:
printf("%c\n", ((char *)(donnee.ptr))[0]);
En faisant gaffe au parenthèse.

Message édité le 27 mars 2016 à 20:19:55 par moxo75
Woap
Woap
Niveau 10
28 mars 2016 à 17:04:12

Le 27 mars 2016 à 20:19:29 moxo75 a écrit :
Pour stocker ton char* dans le ptr :
donnee.ptr = (void*)texte;

"Texte" étant déja un pointeur sur char pas besoin de donner son adresse il faut juste le caster en void *.

Ensiute our afficher donnée.ptr:
printf("%s\n"n (char *)donnee.ptr);
%s prend en paramètre un char* donc tu le cast en char* et non en char** en plus texte est un char* donc c'est logique.

Pour afficher le premier char il suffit donc finalement de:
printf("%c\n", ((char *)(donnee.ptr))[0]);
En faisant gaffe au parenthèse.

Merci beaucoup, c'est bien ça ! [[sticker:p/1kku]]

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment