Résolu Bibliotheques en C

Solutions (27)
Tags :
  • Programme
  • Programmation
, Programmation (collector) |
bonjour a tous, je cherche un site qui reference toutes les fonctions, bibliotheques en C, j'ai fait un peu de recherche mais je n'ai rien trouver, je fais donc appelle a vous.


MERCIE D'AVANCE
Contenus similaires
Meilleure solution
partage
, Légende |
Mais si :D 

Tu peux stocker les mots dans une dimension, et les lettres individuelles dans la seconde dimension.

A moins que tu veuilles stocker des mots dans une matrice à deux dimensions, dans quel cas tu as trois dimensions, deux pour la matrice, et une troisième pour les lettres individuelles. Mais je vois pas trop quel intérêt tu aurais à stocker des mots sous cette forme...
  • Commenter cette solution |
Score
0
òh
òi
|
En informatique, tout problème finit par se résoudre, il faut chercher et être patient. ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Meilleure réponse sélectionnée par wahhh.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
arf c'est bon j'ai rien dit, j'avais oublier un petit detail qui a bien fait foirer tout le programme ..... la fonction fgets prend en compte le caractere de nouvelle ligne '\n', j'avais qu'a le remplacé celui ci par '\0' (ce qui fait qu'il y en aura deux mais bon c'est pas tres grave) et tout marche !!!! oh joie oh bonheur que je reçoi enfin

PS : j'y ai reflechi toute la nuit a se probleme donc forcement sa fait du bien d'avoir trouver
PS2 : encore merci a tous
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Merci CRicky mais je prefere mettre les mots dans un fichier texte. Et malheuresement je rencontre un probleme avec la fonction strlen, je m'explique
- fgets prend un mot du fichier texte et le stock dans un tableau appeler motAchercher
- je compte le nombre de caractere qu'il y a dans se tableau pour ensuite faire un autre tableau appelé motUtilisateur qui possedera le meme nombre de case en memoire que motAchercher afin de les initialiser avec ce caractere '*' (ce sera a remplacer par une lettre du mot a chercher) en faisant une allocation dynamique de memoire.

je teste mon programme, tout marche mais une fois que j'ai trouver le mot, mon programme continue de me demandé d'inserer une lettre, la fonction strcmp ne marche pas correctement.
Je pense que ceci et a cause de la fonction strlen : j'extrai le mot "deodorant" (c'est tres recherché j'avoue sur ce coup :)  et au lieu de me dire ce mot comporte 9 mots, il me dit qu'il y en a 10 et je n'arrive pas a comprendre pourquoi et c'est pourquoi j'ai besoin de votre aide, j'aimerai regler ce probleme et celui de la fonction strcmp qui ne marche pas comme il devrait marcher, je vous passe la partie du code source concerner par ce probleme :

  1. #define TAILLE 15
  2.  
  3.  
  4.  
  5. int main(void)
  6. {
  7. // DECLARATION .....
  8.  
  9. int tailleMot, i = 0;
  10. char motAchercher[TAILLE], lettreUtilisateur[3] = ""; // initialisation au moment de la declaration
  11. char *motUtilisateur = NULL;
  12. FILE * fichier = NULL;
  13.  
  14.  
  15. /*--------------------------------------------------------------------------*/
  16.  
  17. fichier = fopen("listeMots.txt", "r"); // retourne un descripteur de fichier en memoire pour lire et/ou ecrire
  18.  
  19. if (fichier != NULL)
  20. {
  21. rewind(fichier);
  22. fgets(motAchercher, TAILLE, fichier); // fgets lit TAILLE caractere dans le fichier et le stock dans le tableau motAchercher
  23. // retourne null si il echoue ou arrive a la fin du fichier
  24.  
  25. }
  26. else
  27. {
  28. printf ("le fichier n\' pas pu être ouvert en lecteur seule\n");
  29. exit(1);
  30. }
  31.  
  32. tailleMot = strlen(motAchercher);
  33.  
  34.  
  35. printf("%d", tailleMot);
  36.  
  37.  
  38. motUtilisateur = malloc(tailleMot * sizeof(char));// allocation dynamique de memoire en fonction du nombre de lettre situe dans motAchercher
  39.  
  40.  
  41. while (i < tailleMot)
  42. {
  43. *(motUtilisateur + i) = '*';
  44.  
  45. if ( i == tailleMot - 1)
  46. {
  47. *(motUtilisateur + tailleMot - 1) = '\0';
  48. }
  49.  
  50. i++;
  51. }
  52.  
  53. while (strcmp(motAchercher, motUtilisateur) != 0)
  54. {
  55.  
  56. printf ("saisissez une lettre : \n");
  57. LireClavier (lettreUtilisateur, 3);
  58. ChercherEtRemplacerLettre(motUtilisateur, lettreUtilisateur, motAchercher, tailleMot);
  59. printf("%s\n", motUtilisateur);
  60. }
  • Commenter cette réponse |
Score
0
òh
òi
|
Tu peux utiliser strcpy qui permet de copier tout un tableau de caractère (la fonction fait une boucle sur tous les caractères).
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
^^ ok bon ba je vais essayer et reviendrai ici pour avoir de l'aide sa c'est obligé de toute façon lol
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Non c'est même une bonne idée ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
ahhh ok ^^ sa fait moche dans le code source mais bon je fais avec, sinon j'avais pensé a stocker les mots dans un fichier et jouer avec le pointeurs du fichier (celui qui lit les caracteres) pour pouvoir selectionner les mots mais c'est pas un peu casse tete ?
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Gagné :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
si j'ai bien compris je dois faire comme sa ?
int MotAtrouver[5][10];

MotAtrouver[0][0] = 'c';
MotAtrouver[0][1] = 'h';
MotAtrouver[0][2] = 'i';
MotAtrouver[0][3] = 'e';
MotAtrouver[0][4] = 'n';
MotAtrouver[0][5] = 's';
MotAtrouver[0][6] = '\0';

MotAtrouver[1][0] = 'v';
MotAtrouver[1][1] = 'o';
MotAtrouver[1][2] = 'i';
MotAtrouver[1][3] = 't';
MotAtrouver[1][4] = 'u';
MotAtrouver[1][5] = 'r';
MotAtrouver[1][6] = 'e';
MotAtrouver[1][7] = 's';
MotAtrouver[1][8] = '\0';
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Ben pourquoi ne pas juste les stocker dans une liste ? :??: 

Une dimension pour les mots, et une dimension pour les lettres, ça fait 2 dimensions et ça suffit :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
comment dois-je faire dans ce cas , si stocker des mots dans une matrice a 3 dimensions n'a pas vraiment grand interet ?
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
il est donc impossible de stocker des mots dans une matrice ? car moi ce que je veux faire pour mon pendu c'est stocker une liste de mots et j'avais pensé a la matrice comme solution mais malheureusement sa ne marche pas, y a t'il un autre moyen dans ce cas ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Pour le strcpy, j'avais oublié que c'était un tableau à 2 dimensions. Par contre, en C, l'index des tableaux comment à 0 et pas 1.

Sinon c'est bien ça, mot[0][0] est bien un simple caractère. D'ailleurs si tu mettais une chaine, tu aurais une erreur de compilation.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
ou bien on revient au probleme 1, c'est a dire creer un tableau a l'endroit ou se situe 1 caractere ?
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
donc si j'ai bien compris si je fait strcpy(mot[1], "chien"); on aura pour resultat mot[1][0] = 'c';
mot[1][1] = 'h';
mot[1][2] = 'i';
mot[1][3] = 'e';
mot[1][4] = 'n';
mot[1][5] = '\0';

c'est bien sa ?
  • Commenter cette réponse |
Score
0
òh
òi
|
strcpy(Mot, "chien") est équivalent à:
Mot[0] = 'c';
Mot[1] = 'h';
Mot[2] = 'i';
Mot[3] = 'e';
Mot[4] = 'n';
Mot[5] = '\0';

ça remplit bien tout le tableau avec 1 caractère à chaque fois.
Si tu fais Mot[1], ce n'est qu'un seul caractère et pas une liste de caractères.
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
C'est à éviter, mais au niveau où t'es... t'es pas sensé savoir tous ces trucs, tu comprendras quand tu maitriseras à fond les pointeurs et la gestion de mémoire.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
je n'ai pas tres bien compris compris le 2eme probleme (peut etre a cause de la fatigue, sa fait 5h que je suis dessus) je le relirai demain :)  par contre je ne comprend pas pourquoi il faut utiliser strcpy dans ce cas de figure. Est ce que sa revient au meme si je fait Mot[1] = "chien" ou bien c'est a eviter ?
  • Commenter cette réponse |
Score
0
òh
òi
|
En C pour l'affichage, le plus simple est d'utiliser libSDL

Ensuite pour ceci:
  1. char Mot[6][10];
  2.  
  3. Mot[1][7] = "chiens";
  4. Mot[2][6] = "chats";
  5. Mot[3][7] = "avions";
  6. Mot[4][9] = "voitures";

Tu alloues en mémoire une zone de 6 * 10 octets.
1er problème: Si tu fais Mot[1][7], tu accèdes à l'élément du tableau [1][7]. Le tableau étant de type char, c'est un (et un seul) caractère. Une chaine de caractère est un tableau de char. Donc tu ne peux pas mettre dans un caractère un tableau de caractères.
2eme problème: "chiens" crée une zone mémoire temporaire qui contient un tableau de caractère. Une chaine de caractères (ou un tableau de caractère, c'est pareil), n'est en fait qu'un pointeur (qui est l'adresse mémoire du premier élément du tableau). Si tu essaie d'assigner à une chaine une autre chaine avec =, en fait tu ne fais que changer les adresses mémoires. Or comme je l'ai dit, c'est une mémoire temporaire qui sera supprimé. Donc le pointeur aura une adresse mémoire invalide => risque de crash.

Pour faire bien avec les chaines de caractères, il faut utiliser les fonctions str...()
ex: strcpy( Mot[1], "chiens" );
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
oui c'est vrai pas tres pousser, je ne connais pas grand chose en C (seulement les pointeurs et allocations dynamique) j'aimerai bien apprendre les listes chainées et les tables de hachage mais dans ma formation ce n'est pas au programme et e n'ai donc personne pour m'expliquer ce que c'est est a quoi sa sert, j'ai essayer de comprendre tout seul mais c'est trop compliqué pour moi par contre si tu connais des sites ou des livres qui me permettront d'apprendre enormement de choses en C je serai tres interressé de les connaitre :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Ben si tu veux faire autre chose que de la console, va falloir te lancer dans de l'openGl ou du DirectX. Bref, si t'es au niveau de faire un pendu, c'est p'tet trop poussé pour toi encore, à moins que tu sois très familier avec le C/C++ et que t'aime passer des nuits blanches :D 

Et pour le reste, oui les matrices c'est sympa si tu veux stocker plusieurs données ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
et bien en faite pour un de mes prjets de bts IG j'aimerai comme premier projet faire une sorte de pendu en C, je l'ai presque fini, mais jaimerai mettre un peu d'animation plutot que de jouer sur la console voila pourquoi je demande :) 

j'en profite par ailleur pour poser une autre question,
afin de stocker plusieurs mots pour eviter d'avoir a faire au meme mot a chaque fois ... est ce que une matrice est approprié pour ce genre de cas ? ex :

char Mot[6][10];

Mot[1][7] = "chiens";
Mot[2][6] = "chats";
Mot[3][7] = "avions";
Mot[4][9] = "voitures";

  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Ah ben les bibliothèques de base y'en a pas des masses, et pourtant elles sont suffisantes pour à peu près tout faire.

Si après tu veux faire autre chose, ça sera côté interaction avec l'écran, la carte graphique, la carte réseau, le clavier, la souris... les composants de différents logiciels comme Office ou Firefox...

Donc après c'est très spécifique, vois d'abord ce que tu veux faire, et ensuite vois quels composants peuvent y répondre.
Par exemple sur Windows, pour tout ce qui est graphismes et sons, tu passeras par DirectX. Ensuite si tu veux faire un logiciel de dessin, tu peux faire ça à la main, ou alors tu peux chopper des librairies additionnelles sur internet pour t'aider, comme Cairo : http://cairographics.org/

Bref, y'a des milliers (millions ?) de librairies qui existent, dédiées à tout un tas d'applications différentes. Tu peux donc pas avoir une liste complète de tout ce qui existe, faut voir ce que tu veux faire, et ensuite trouver les librairies qui peuvent y répondre.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
parce que je connais que 3 bibliotheques lol j'aimerai connaitre les autres pour élargir mes connaissance en C et faire de meilleur programme
  • Commenter cette réponse |
Score
0
òh
òi
, Légende |
Et pour faire quoi ?

Parce que y'en a un paquet :D 
  • 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