Se connecter / S'enregistrer

Résolu Questions sur le language C

Solutions (11)
Tags :
  • Programme
  • Programmation
|
Bonsoir, alors comment je l'ai précisé dans le sujet, je me pose 2-3questions sur le language ".c".
Tout d'abord mon prof ma dit que quand je faisais appel a une fonction en tout début de mon programme, il fallait que le titre termine par ".h" et non par ".c" , quand je lui ai demander pourquoi il n'a pas était capable de me répondre! xd
Donc pourquoi utilisons nous le ".h" pour les définitions des programmes?
Ensuite donc j'ai créer une bibliotheque regroupant plusieurs bibliothèques qui appelles des fonctions et je voudrais savoir si mon ".h" peut s'exécuter automatiquement au début de mon programme sans que je l'appelle?
Sa doit pas être clair ce que je vous raconte, je vous envoie mon programme vous aller comprendre.

Programme:

#include <Pouyadoux.c>


/********************** P R O G R A M M E ***********************/

Initialisation();

void main()
{
start_progr(); // appel de la fonction start_prog

while(1)

{
progr_gen(); // appel de la fontion progr_gen
}


{
progr_enc(); // appel de la fonction progr_enc
}

}

// Voila donc le programme en question, maintenant je vous envoie le contenu de la bibliotheque "Pouyadoux.c"

#include <Initialisation.h>
#include <start_progr.c>
#include <progr_gen.c>
#include <progr_enc.c>

Voila et après chaque bibliothèque se rapporte à une partie précise de mon programme.
Mais je voulais savoir donc si dans mon programme principal j'avais besoin de rajouter " Initialisation();" ou si cette fonction s'exécuter automatiquement?

Merci d'avance pour votre aide, si quelque chose n'ai pas clair j'essaierais d'être le plus clair et le plus compréhensible possible à l'avenir !:) 

Bonne soirée
Contenus similaires
Meilleure solution
partage
|
pour mieux t'expliquer j'ai sorti un de mes vieux serveur client, vola le code du client avec un .h et un .c.
le .h
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <errno.h>
  5. #include <netdb.h>
  6. #include <sys/types.h>
  7. #include <netinet/in.h>
  8. #include <sys/socket.h>
  9. #include <sys/stat.h>
  10. #include <fcntl.h>
  11. #include <string.h>
  12. #include <sys/ioctl.h>
  13.  
  14. void creer_socket_client(const char *hostname, const int port);

tu vois il y a les inclusions et une déclaration de fonction et donc le .c
  1. #include "client.h"
  2.  
  3. void creer_socket_client(const char *hostname, const int port)
  4. {
  5. int socket_fd;
  6. int port;
  7. struct sockaddr_in adr_socket;
  8. struct hostent *hostinfo;
  9. char buf[20];
  10. int perm=1;
  11.  
  12. if((socket_fd = socket(AF_INET, SOCK_DGRAM, 0) ) ==-1)
  13. {
  14. perror("socket");
  15. exit(errno);
  16. }
  17.  
  18. /* initialisation de la structure */
  19. adr_socket.sin_family = AF_INET;
  20. adr_socket.sin_port = htons(port);
  21. if ((hostinfo = gethostbyname(hostname)) == NULL)
  22. {
  23. perror("Hote inconnu");
  24. return;
  25. }
  26. /*demande de diffusion*/
  27. if (setsockopt(socket_fd, SOL_SOCKET, SO_BROADCAST, (void *) &perm, sizeof(perm)) < 0)
  28. {
  29. perror("setsockopt");
  30. exit(errno);
  31. }
  32. /*pseudo connexion du client au serveur*/
  33. if((connect(socket_fd, (struct sockaddr *)&adr_socket, sizeof(struct sockaddr_in))) == -1)
  34. {
  35. perror("Echec lors la de connexion au serveur, serveur inactif ou mauvais choix de port");
  36. return;
  37. }
  38.  
  39.  
  40. /* envoi du message */
  41. while(1)
  42. {
  43. sprintf(buf, "test %d", i);
  44. usleep(200000);
  45. if(write(socket_fd,buf,strlen(buf) == -1))
  46. {
  47. perror("write");
  48. return;
  49. }
  50. i++;
  51.  
  52. }
  53.  
  54. }

qui contient l'inclusion du .h et qui fais le corps de la fonction
  • Commenter cette solution |
Score
0
òh
òi
|
Bonjour, bon ben c'est bon j'ai passé mon oral, j'ai eu aucune question sur les programme en ".C" pour les Micro-contrôleurs, les boules!!! :(  ...
Enfin, c'est une bonne chose de faite, merci pour votre aide, le sujet peut être clos.
  • Commenter cette réponse |
Score
0
òh
òi
|
lucas666 a dit :
Vu ton niveau de français, effectivement, ça va pour le site du zero (interdit aux plus de 12 ans)
Comme tous les forums web de programamtion , c'est une calamité et ça mène droit dans le mur (puisqu'il faut tout réapprendre de zéro justement ensuite)

C'est ce que tu as fais ? et tu t'es planté en beauté ? et bien le problème ne vient peut-être pas du site... :D 
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci Mcpherson, ce coup ci c'est bon :) ! J'ai bien modifié mon programme et compris comment fonctionner un fichier header en début de programme :) !
Le sujet peut être clos, encore merci de m'avoir aider.
yoyohang
  • Commenter cette réponse |
Score
0
òh
òi
|
DivX_666 a dit :

je te conseil le Site du Zero qui est je trouve tres tres bien expliquer.


Vu ton niveau de français, effectivement, ça va pour le site du zero (interdit aux plus de 12 ans)
Comme tous les forums web de programamtion , c'est une calamité et ça mène droit dans le mur (puisqu'il faut tout réapprendre de zéro justement ensuite)

Voir les avis sur hardware.fr et Usenet (consultants pros), où ce genre de site fait rire tour le monde, autant les questions que les réponses (genre "C++ est plus puissant que C", etc......)
  • Commenter cette réponse |
Score
0
òh
òi
|
le .h ne s'exécute pas mais s'inclus.
au début de ton .c si tu as besoin d'un .h tu fais #include "fichier.h"
ensuite pour ta question j'ai du mal à comprendre parce que ton programme est vraiment mal foutu, tu devrais commencé par le structurer : faire un .h avec des déclarations de fonctions et un .c avec les corps de ces fonctions
ton .h est en fait un fichier de ressources, c'est un panier de fruits, il ne bouge pas jusqu'a ce que tu prenne un fruit, jusqu'a ce que le .c s'en serve.

quelle belle métaphore.
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok CRicky, mais je n'ai toujours pas la réponse que je cherche !! Xd
En très simple, est ce que dans mon programme si j'enlève la ligne " Initialisation();" mon fichiers ".h" va s'exécuter ou bien je dois forcement laisser la ligne?
Sinon pour ce qui est des ".c" j'ai bien compris ^^.
Aprioris si j'ai bien compris, mon fichier header doit s'exécuter automatiquement en début de programme sans que j'ai besoin de rajouter une ligne pour l'appeler.
Voila merci bonne soirée
  • Commenter cette réponse |
Score
0
òh
òi
|
En théorie, on peut inclure un fichier .c, mais ce n'est à faire que dans des cas extrêmement particulier, donc à ne pas faire.
En fait, la différence, c'est qu'un .h ne se compile pas. Pour faire un programme, on compile tous les .c qui inclus des déclarations dans les .h. Si une déclaration doit être dupliquée, il suffit d'utiliser le même .h.
Faire des inclusion de .c, c'est inclure des fichiers "compilables", et donc inclure directement du code exécutable dans un .c. Il est facile de ne plus s'y retrouver. Pour pouvoir s'y retrouver, tout ce qui est code exécutable, se met dans des .c, et les déclaractions dans des .h.
  • Commenter cette réponse |
Score
0
òh
òi
|
Dacord merci beaucoup j'ai compris comment utiliser soit un .h ou un .c ^^!
Oui mon prof n'ai pas très calé et quand on débute c'est pas toujours évident! xD
Je me sert du site du zéro quand je recherche des informations mais j'ai mal du rechercher car je n'avais pas trouver le passage, merci Divx_666.
Bon je ferme pas le topic, si j'ai d'autres questions je viendrais vous les poser :) !
Bonne journée =)

ps: A oui, encore une question, est ce que dans mon programme je dois rajouter la ligne " Initialisation();" pour appeler les prototypes de mes fonctions ou le fichier "Initialisation.h" inclus dans ma bibliothèque va s' exécuter tout seul?

Merci d'avance ==)
  • Commenter cette réponse |
Score
0
òh
òi
|
salut, alors ton prof est vraiment une m...
tu pourrais faire un programme C avec seulement un fichier .c. Le .h te sert à organiser ton code, dedans tu y met les prototypes des fonctions que tu déclare dans les .c et tu y met aussi les structures, les inclusions genre #include <stdio.h>.
dans ton .c, au début tu dois inclure le .h par #include "tonfichier.h"
quand ton projet C devient un minimum important tu auras plusieurs .c et plusieurs .h et c'est un fichier Makefile qui permettra de faire le liens entre eux et de donner les instructions au compilateur.
donc en clair les .h comme leur petite lettre l'indique sont des headers, ils contiennent les déclarations, les .c contiennent le code proprement dit.
  • Commenter cette réponse |
Score
0
òh
òi
|
J'ai pas tout compris lol
Mais je pense que ce texte issu du Site du Zero pourrait t'expliquer le .h et .c :
Citation :

Comme vous le voyez, il y a 2 types de fichiers différents sur la capture d'écran que je vous ai montrée :


Les .h : appelés fichiers headers. Ces fichiers contiennent les prototypes des fonctions.
Les .c : les fichiers sources. Ces fichiers contiennent les fonctions elles-mêmes.


En général, on met donc rarement les prototypes dans les fichiers .c comme on l'a fait tout à l'heure dans le main.c (sauf si votre programme est tout petit).

Pour chaque fichier .c, il y a son équivalent .h qui contient les prototypes des fonctions.
Rejetez un oeil à ma capture d'écran :


Il y a ia.c (le code des fonctions) et ia.h (les prototypes des fonctions)
Il y a affichage.c et affichage.h
etc.


Si tu veux plus de détail sur le C et visiblement en apprendre plus qu'avec ton prof (^^) je te conseil le Site du Zero qui est je trouve tres tres bien expliquer.

Bon courage pour la suite.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS