Langage C structure
Fermé
jéjéleboss
Messages postés
1
Date d'inscription
lundi 2 juillet 2007
Statut
Membre
Dernière intervention
2 juillet 2007
-
2 juil. 2007 à 16:38
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 2 juil. 2007 à 22:59
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 2 juil. 2007 à 22:59
A voir également:
- Langage C structure
- Langage ascii - Guide
- Langage binaire - Guide
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Pascal langage - Télécharger - Édition & Programmation
- Structure d'un rapport de stage - Guide
5 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 juil. 2007 à 16:58
2 juil. 2007 à 16:58
Il ya une ligne fausse dans l'énoncé:
ps est un pointeur vers une structure st. Il doit donc avoir comme valeur l'adresse d'une structure st.
ps=*s;à remplacer par
ps=&s;
ps est un pointeur vers une structure st. Il doit donc avoir comme valeur l'adresse d'une structure st.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 juil. 2007 à 19:53
2 juil. 2007 à 19:53
Salut,
s.chaine ="ceci est une chaine";
tu dois faire un strcpy
on ne peux pas utiliser "=" pour les chaînes de caractères
en plus il faut allouer un peu de mémoire
s.chaine ="ceci est une chaine";
tu dois faire un strcpy
on ne peux pas utiliser "=" pour les chaînes de caractères
en plus il faut allouer un peu de mémoire
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 juil. 2007 à 20:24
2 juil. 2007 à 20:24
Si tu peux.
En fait quand tu fais ça:
Il s'agira d'une chaine constante stockée dans une zone mémoire accessible en lecture seule au lancement du programme. Cette zone mémoire initialisée avec ces caractères est allouée par le système d'exploitation au lancement du programme donc ya pas de soucis, str ne fera que pointer vers cette zone.
Ce que tu ne peux pas faire c'est:
Car là ça signifie que tu copies le contenu de "ma chaine" dans la zone mémoire pointée par str. Or ici str ne pointe sur rien.
En fait une expression comprise entre guillemets doubles représente un pointeur vers un tableau de caractère. La zone mémoire pointée est en lecture seule donc constante.
En fait quand tu fais ça:
char *str = "une chaine";
Il s'agira d'une chaine constante stockée dans une zone mémoire accessible en lecture seule au lancement du programme. Cette zone mémoire initialisée avec ces caractères est allouée par le système d'exploitation au lancement du programme donc ya pas de soucis, str ne fera que pointer vers cette zone.
Ce que tu ne peux pas faire c'est:
char *str; strcpy(str, "ma chaine");
Car là ça signifie que tu copies le contenu de "ma chaine" dans la zone mémoire pointée par str. Or ici str ne pointe sur rien.
En fait une expression comprise entre guillemets doubles représente un pointeur vers un tableau de caractère. La zone mémoire pointée est en lecture seule donc constante.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
2 juil. 2007 à 20:30
2 juil. 2007 à 20:30
Salut,
je suis toute à fait d'accord avec toi
En revanche dans son cas il ne s'agit pas d'une initialisation donc il ne peux pas faire s.chaine = "jlksdf lkjsdflk "
et quand j'ai parlé de strcpy j'ai bien précisé qu'il faut allouer de la mémoire
en bref je voulais dire
je suis toute à fait d'accord avec toi
En revanche dans son cas il ne s'agit pas d'une initialisation donc il ne peux pas faire s.chaine = "jlksdf lkjsdflk "
et quand j'ai parlé de strcpy j'ai bien précisé qu'il faut allouer de la mémoire
en bref je voulais dire
char *str; str = (char *) malloc ( sizeof (char) * 50); strcpy(str, "jkljk ljklj");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 juil. 2007 à 22:59
2 juil. 2007 à 22:59
-----En revanche dans son cas il ne s'agit pas d'une initialisation donc il ne peux pas faire s.chaine = "jlksdf lkjsdflk " ------
Si si, tu peux le faire après avoir déclaré la variable :-)
Si si, tu peux le faire après avoir déclaré la variable :-)