Pointeurs [Fermé]

Signaler
-
[Dal]
Messages postés
5310
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2019
-
Bonjour,


je dois ecrire des fonctins concernant les pointeurs et j ai un peu de mal, tout d abord j ai fais deux fonctions quelqu un peut il me dire si cela est exacte ? :

--i* Écrire une fonction qui prend un pointeur sur int en paramètre et donne à l'int la
valeur de 42.


nt main(void)
{
int a;
int *ptr;

a = 42;
ptr = &a;
printf(ptr);
return (0);
}


---------------

Écrire une fonction qui prend un pointeur sur pointeur sur pointeur sur pointeur sur
pointeur sur pointeur sur pointeur sur pointeur sur pointeur sur int en paramètre
et donne à l'int la valeur de 42.

nt main (void)
{
int a;
int *ptr;
int **ptr2;
int ***ptr3;
int ****ptr4;
int *****ptr5;
int ******ptr6;
int *******ptr7;
int ********ptr8;
int *********ptr9;

a = 42;
ptr = &a;
ptr2 = &ptr;
ptr3 = &ptr2;
ptr4 = &ptr3;
ptr5 = &ptr4;
ptr6 = &ptr5;
ptr7 = &ptr6;
ptr8 = &ptr7;
ptr9 = &ptr8;
ft_putnbr(*********ptr9);
return (0);
}


-------------------- Voila apres ce aui me pose soucis c est fonction divise les deux paramètres a et b et stocke le resultat dans l'int
pointé par div.
Elle stocke également le reste de la division de a et b dans l'int pointé par mod.

J ai commence comme ca mais je bloque un peu..

int main (int a, int b, int *div, int*mod)
{
a/b = *div;
%*div = **mod;

}

14 réponses

Messages postés
5310
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2019
833
Bonjour tarr,

Tu dois écrire une fonction dans tes exercices 1 et 2. Donc ton main doit appeler la fonction que tu dois créer selon les indications fournies. Tu ne peux pas te contenter de la fonction main.

Dans ton 2ème problème tu utilises "ft_putnbr". Je ne sais pas ce que c'est.

Pour ton 3ème problème, ce que tu dis est incompréhensible pour moi.


Dal
Bonjour merci pour ta reponse, pour le 1 je dois juste mettre une fonction dans le main et c est bon ?

Pour le 2 on nous donne cela pour le "afficher"

Et pour le 3 je n ai rien compris, je ne sais pas comment proceder, j ai essaye mais il faut croire que ce n est pas encore ca lol
[Dal]
Messages postés
5310
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2019
833
Pour la 2ème fois, je ne connais pas ft_putchar. Si tu tiens à l'utiliser il va falloir que tu me dises quel est le prototype de ft_putchar.

Autrement, moi, pour afficher un caractère pointé par un char *str, je fais :
printf("%c", *str);

Expérimente un peu avec un code qui appelle une fonction ft_putchar contenant juste cela et qui compile sans erreurs ni warnings.

Après avoir fait cela, fais
str++;
et refait
printf("%c", *str);
... qu'est-ce qui se passe ?

Tu n'as pas besoin de connaître la longueur de ta chaîne, juste de savoir comment sont formées les chaînes en C. Ce que tu dois tester, ce n'est pas la longueur de ce que tu écris, c'est juste que ce que tu es sur le point d'écrire n'est pas la fin de la chaîne.

L'algorithme est indiqué dans mon précédent message. Dessine le, fais des schémas, comprend le.


Dal
le ft_putchar est la seule fonction qu ils nous autorisent, par exemple pour cette exercice la fonction devrq etre prototype de la facon suivante : void ft_putstr(char *str);

j ai essayé comme ca void ft_putstr(char *str)
{
while ( str != 0)
{
str = str + 1 ;
}
ft_putchar ("%c", *str);
str = str + 1 ;
}




j ai cette erreur warning: implicit declaration of function `ft_putchar'
Undefined symbols for architecture x86_64:
"_ft_putchar", referenced from:
_ft_putstr in cc54mIWp.o
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
[Dal]
Messages postés
5310
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2019
833
Le compilateur se plaint que fonction ft_putchar n'est définie nulle part et émet un warning au stade de la compilation. Lors de l'édition de liens, le linker indique qu'aucune liaison ne permet, non plus, de savoir quoi faire de ce symbole.

Si tu dois utiliser la fonction ft_putchar, il faut

- qu'elle soit dans ton code : si on te demande de la développer, mais sans la bibliothèque standard, tout ce que tu as c'est les interruptions du BIOS et la programmation directe du matériel... alors je pense que ce n'est probablement pas ton cas

- ou que tu y fasses appel : avec (1) un fichier .c contenant son implémentation et un .h contenant son interface, et il te manque un #include et un fichier .c à envoyer au compilateur ; ou (2) une bibliothèque externe que tu dois lier à ton programme, et il te manque, en plus du #include faisant référence au fichier .h contenant son interface, la référence à la bibliothèque à utiliser : avec gcc c'est avec l'option
-l
(note : c'est un L minuscule).

Tu ne peux pas l'utiliser "au hasard" en passant des paramètres au pifomètre. Il faut connaître son prototype (au moins), et sa documentation éventuelle (nécessaire si elle est compliquée). C'est la 3ème fois que je te le dis, après j'arrête :-)

D'après le nom, elle ne devrait faire qu'afficher un caractère, aussi son prototype et son usage ne devraient pas être très complexes.


Dal
tarr et pour l'ex 03
tu a fait comment ?
[Dal]
Messages postés
5310
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2019
833
zac : ce n'est pas comme cela que fonctionne le forum.

http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm


Dal