RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 allocation dynamique et pointeurs

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
Le_chaba7
Membre newbie
Inscrit : 24/01/2006
Messages : 34
Message
#144720
Posté le 01/11/07 à 19:41

#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> struct phrase { char *s; }; typedef struct phrase PHRASE; main() { PHRASE T[10]; char s[200]; for(i=0; i<10 ; i++) { get(s); T[i].s = malloc(strlen(s)); memcpy(*(T[i].s),s,strlen(s)); free(T[i].s); } inverse(T); affichage(T); return 0; }


bonjour,

c est un programme qui stocke 10 phrases dans un tableau de pointeur sur char..
est ce que c est juste d\'ecrire \"T[i].s = malloc(strlen(s));\" et pour \"memcpy(*(T[i].s),s,strlen(s));\" pour allouer puis ajouter le contenue
merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 487
Message
#144729
Posté le 01/11/07 à 23:37
Je te conseillerais d'utiliser new et delete pour allouer de la memoire dynamique, je préfere generalement le c au c++, mais dans ce cas, new et delete sont d'avantage conseiller. Et quesque tu essaie de faire au juste? Pk utilise tu les char[] si tu inlcut la class "String.h"???

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2554
Message
#144732
Posté le 02/11/07 à 11:07
new et delete, c'est du C++.

S'il doit apprendre/utiliser le C, il n'a pas le choix, c'est malloc et free...
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 487
Message
#144749
Posté le 03/11/07 à 02:05
Alp dit :
S'il doit apprendre/utiliser le C, il n'a pas le choix, c'est malloc et free...


Il est ou au juste le probleme? Tu veut savoir si tu a bien écrit ton programme?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Spirit
Superviseur :
- C & C++
Modérateur :
- PHP
- Javascript
- MySQL
Avatar de Spirit
Inscrit : 07/04/2004
Messages : 1963
Message
#144810
Posté le 04/11/07 à 20:41
est ce que c est juste d\'ecrire \"T[i].s = malloc(strlen(s));\" et pour \"memcpy(*(T[i].s),s,strlen(s));\" pour allouer puis ajouter le contenue
merci

faux
malloc(int x) alloue x octet
pour une chaine de caractères, il faut allouer taille de la chaine * taille en octet d'un caractère pour que ce soit exact

donc faire
T[i].s = malloc(strlen(s) * sizeof(char));
__________________________
Spirit - modérateur casu ^-^'

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2554
Message
#144812
Posté le 04/11/07 à 21:11
Or sur la plupart des plateformes, sizeof(char)=1, d'où la réponse (un peu approximative tout de même, désolé) de rainbow.

Donc +1 pour Spirit.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 487
Message
#144945
Posté le 06/11/07 à 16:52
Ce n'est pas que je veut m'obstiner, mais ca sert a quoi de multiplier un nombre par 1??? Ce code fait tres bien l'affaire pourtant...

Ex.
T[i].s = malloc(strlen(s));

est équivalent a

T[i].s = malloc(strlen(s) * sizeof(char));

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2554
Message
#144958
Posté le 06/11/07 à 17:52
Sur la plupart des plateformes c'est équivalent.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 1022
Message
#144969
Posté le 06/11/07 à 18:23
tu fais la même erreur que moi : je croyais que c'était toujours 1 mais apparemment non...
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

How to ask Questions ou Comment poser une question

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.