diwy72
Messages postés5Date d'inscriptionsamedi 1 mars 2008StatutMembreDernière intervention 5 mars 2008
-
5 mars 2008 à 18:18
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 2010
-
5 mars 2008 à 22:35
Bonjour,
J'apprend actuellement le languge C et je m'entete a faire fonctionner une routine.
Je voudrais via un prototype et pointeur transferer une chaine de caractere.
le resultat, j'ai un seul caractere qui est transferer ????
Merci de votre aide
voici me code (tout simple a mes yeux!!)
NB: Je travaille avec devc++ ou code block etle source ne fonctionne sur aucun et pas de defaut de compil...
#include <stdio.h>
#include <stdlib.h>
int num(char *s);
int main(int argc, char *argv[])
{
char lire[100]={};
if (num(lire)!=1)
{
printf("pb envoie car");
}
else
{
printf("le mot du prototype est :: %s \n",lire);
}
system("PAUSE");
return 0;
}
int num(char *s)
{
char mot[8]="BONJOUR";
*s=*mot;
return 1;
}
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 mars 2008 à 21:10
int num(char *s)
{
strcpy(s, "BONJOUR");
return 1;
}
Voilà tout.
"je ne comprends toujours pas pourquoi je n'arrive pas a lire "Bonjour"
car apparement dans le principe ecriture, je semble etre bon???"
Non. On écrit rien dans un tableau de la sorte. Si tu utilises des
pointeurs, la seule chose que fera i = j est de faire pointer i sur j
et donc, toute modification sur j se verra à partir de i. Aucune copie
de données ne sera faite.
De plus, passer un pointeur en argument d'une fonction ne fait que
passer l'adresse contenue dans le pointeur et non l'adresse du
pointeur. On ne peut donc pas modifier l'adresse du pointeur passé en
argument. La seule façon de faire cela est de passé l'adresse du
pointeur mais ici, ça ne sert à rien donc je ne détaillerai pas.
Ensuite, déclarer une variable dans une fonction suppose qu'elle sera
détruite à la sortie de la fonction. Ceci fait que retourner un tableau
déclaré, par exemple, dans une fonction est impossible puisqu'il sera
"détruit".
Même principe pour les pointeurs. On peut faire pointer un pointeur
externe sur un tableau locale mais dès la sortie de la fonction, ce
tableau n'existera plus et donc, le pointeur externe ne pointera sur
plus rien de valide.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 mars 2008 à 20:34
[auteur/CHATBOUR/828664.aspx Chatbour] >> Ben non. Tout ce qu'on va faire c'est faire pointer le paramètre s sur mot et non l'argument lire. Deplus, la variable mot sera "détruite" à la fin de la fonction num alors...
Pour copier une chaine dans une autre, on utilise strcpy.
diwy72
Messages postés5Date d'inscriptionsamedi 1 mars 2008StatutMembreDernière intervention 5 mars 2008 5 mars 2008 à 21:31
Merci beaucoup SAKINGDOM
ce probleme m'embetait depuis une semaine, tu m'as retirer un grosse epine du pied et je vais pouvoir continuer dans mon petit projet de debutant ( un jeu du pendu avec recherche aleatoire dans un fichier texte)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 5 mars 2008 à 21:35
"On ne peut donc pas modifier l'adresse du pointeur passé en argument."
À remplacer par:
"On ne peut donc pas modifier l'adresse contenue dans le pointeur passé en argument."