Bonjour,
Je viens de commencer l'apprentissage du langage C.
J'ai une question toute simple. Je voudrais écrire un programme qui s'appelle GetDouble, je lui passe comme paramètre un nombre (réel) et il me retourne son double.
Bonjour,
Je viens de commencer l'apprentissage du langage C.
J'ai une question toute simple. Je voudrais écrire un programme qui s'appelle GetDouble, je lui passe comme paramètre un nombre (réel) et il me retourne son double.
Salut,
Il faut que tu fasses une fonction du genre
Ensuite, tu appels ta fonction dans un main, ect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 double getDouble(double r){ return ... }
Il ne te reste plus qu'à trouver quoi mettre à la place des ...![]()
Est-ce que je pourrais faire quelque chose comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include <stdio.h> double main(double x) { return 2*x }
Ou alors tu peux faire rentrer une valeur à l'utilisateur avec un scanf.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <stdio.h> double getDouble(double r){ return r*2; } int main(){ double x=2; double Dx=getDouble(x); printf("%d", Dx); }
Il vaut mieux créer une fonction à l'extérieur du main et l'appeler après dans le main.
Comment appeler ce programme GetDouble à partir d'un autre programme C ?
Pour cela, il vaut mieux que tu fasses des recherches sur la programmation modulaire en C, cela sera d'ailleurs bien mieux expliqué que par moi..
Désolé.
Vu ton niveau en C, le mieux que tu as à faire est de lire un tutoriel en C depuis la première page (tu trouvera la réponse à ta question et aux 36 autres qui arriveront si on te donne une réponse toute cuite). Ça tombe bien, il y en a de très bons sur Développez.
Aussi, les gens sur le forum sont des humains qui t'aident bénévolement. Un peu de politesse et marquer ce que tu as essayé me semble un minimum.
Peut être que ce qu'il demandait était de passer un argument au programme C de type double.
Si c'est le cas, un code de ce style fait l'affaire.
Pour appeler ce programme depuis un autre programme C, regarde du coté de la famille de fonction exec (comme execve).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <stdio.h> #include <stdlib.h> #include <string.h> double f(double d){ return 2*d; } int main(int argc, char** argv) { return f(atof(argv[1])); // Atof fait str to float }
Bonjour,
Justement dès la lecture des premières pages du tutorial C j'ai commencé à me poser des questions.
J'ai appris que le programme C est une fonction spéciale qui s'appelle main() alors je le suis posé les questions ci-dessus.
Bonjour
C'est vrai. "main()" est la première fonction appelée par l'exécutable qui démarre. Si pas de "main" alors pas de programme.
Toutefois cette fonction est un peu figée dans sa définition. Déjà elle ne peut-être que du type "int" (et pas double comme tu as tenté). Et ensuite sa valeur retournée ne peut-être comprise qu'entre 0 et 255 (troncature si ça dépasse). Cette valeur permet de détecter depuis l'OS si le programme s'est bien déroulé (retour 0) ou s'il y a eu un souci (retour autre).
Et enfin elle ne prend que 0, 1, 2 ou 3 paramètres.
- Si pas de paramètre, alors pas de paramètre
- Si un paramètre (traditionnellement on le nomme "argc" pour "arg count") alors c'est le nombre d'arguments passés au programme (un argument est une chaine tapée entre le nom du programme et la touche <return> ce qui permet de rendre le programme paramétrable => ex cat toto => le programme "cat" est appelé avec l'argument "toto" sensé être un nom de fichier => le programme "cat" pourra alors traiter le fichier "toto").
- Si deux paramètres, alors le second (traditionnellement nommé "argv" pour "arg values") est la liste des arguments. Chaque argument étant une chaine, ça se traduit par un char * et une liste de chaine se traduira alors par un char **). Ainsi argv[1] contient le premier argument, argv[2] le second et etc. Et argv[0] contient le nom du programme lui-même (ainsi le programme se connait).
- Si trois paramètres, alors le 3° (traditionnellement nommé "envp" pour "environment program") contient les variables de ton environnement (là aussi une liste de chaines donc là aussi un char **)
Le problème vient de ton emploi maladroit du verbe "retourne". Car un programme ne peut retourner qu'un code d'état compris entre 0 et 255. En revanche il peut afficher des trucs, ou bien écrire ces trucs dans un mécanisme de communication (fichier, pipe, socket, ipc, etc etc etc). D'ailleurs la différence entre "afficher "et "écrire" n'existe en fait pas car en réalité quand il affiche, en fait il écrit dans le fichier "écran". Donc pour résumer, un programme ne peut qu'écrire des trucs.
Donc là tu dois préciser ton besoin...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bonjour et merci beaucoup Sve@r pour votre réponse et vos explications si claires et si précises.
J'en ai appris plus et mieux que d'après le tuto.
Je vous explique maintenant les raisons qui me poussent à apprendre le langage C.
Je réalise des développements sur un serveur AS/400 en CL et en COBOL.
Ces langages étant pauvres j'aimerais alors développer des fonctions en C que j'appellerais à partir de CL ou de COBOL.
Ouch !!! Toi tu fais pas semblant...Es-tu sûr que ce soit possible d'abord ?
Je viens de trouver ce lien qui en parle. Mais il me semble que ce lien le fait dans l'autre sens (C qui appelle du COBOL).
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Salut !
Techniquement oui, c'est possible. Ma seule expérience de l'AS/400 a duré un mois pendant l'année 2000, sur un modèle « récent » (qui tenait déjà dans une tour format PC et pas dans un appareil qui avait la taille d'un meuble).
Et effectivement, c'est un des rares ordinateurs « répandus » qui ne s'appuie pas sur le C. À l'époque, on avait justement un spécialiste AS/400 qui était en train d'essayer un compilateur C sur cette même machine.
Partager