Problème pour faire liaison entre main.c et header.h - C - Programmation
Marsh Posté le 25-04-2012 à 01:59:01
oui mais elle fait quoi ta fonction ? ( et tes includes de strings time et co ça sert a rien, ils seront inclus lors du #include "headerfichier.h" )
Marsh Posté le 25-04-2012 à 02:12:59
Normal. Tu inclus "headerfichier.h" alors que ton header s'appelle header.h.
Il y a autre chose: tu n'es pas censé implémenter de fonction dans des headers (saufs des fonctions très courtes en static inline).
Il te faut créer autre .c avec le code de ta fonction et ne laisser dans ton header que le prototype de ladite fonction.
Pour résoudre ton problème, une solution propre:
Code :
|
Dans ton header:
Code :
|
Dans ton implémentation:
Code :
|
Puis une solution sale:
Dans ton header:
Code :
|
Dans ton implémentation
Code :
|
Et là, normalement, tu pourra utiliser chaine dans ton main.
Marsh Posté le 25-04-2012 à 02:23:52
ok werz je vais voir ce que je peux faire pour améliorer tout ça, en attendant voici la fonction complète :
Code :
|
Je cherche donc comment faire pour apporter la chaine de caractère "chaine" dans le main
Marsh Posté le 25-04-2012 à 03:06:30
Wow!
Sans vouloir être méchant, ton code pique un peu les yeux mais bon...
Je pense que tu devrais revoir un peu ton algo, il y a plus efficace mais le plus simple serait sans doute ça:
1. Parcours une première fois le fichier pour trouver le nombre de lignes non vides et la taille max de chaque ligne. Exemple:
Code :
|
2. Alloue avec malloc le nombre de caractères correspondant à cette taille max (+ 1 pour le '\0').
3. Tire la ligne à afficher au sort
4. Parcours une seconde fois le fichier mais arrête toi au début de la ligne que tu veux afficher.
5. Copie la ligne dans la mémoire précedemment allouée avec fgets.
6. Retourne le résultat.
Tu devrais aussi:
* Ne pas déclarer de variables au milieu du code
* Libérer la mémoire qui ne sera plus utilisée à la fin de l'appel de la fonction
* Sortir de la fonction en cas d'erreur à l'ouverture du fichier, exemple:
Code :
|
* Découper ta fonctions en sous-fonctions (exemple, une fonction pour compter les lignes, une fonction pour afficher une ligne d'index donné, ...).
* Homogénéiser ton code, par exemple en utilisant un guide de style (ex: http://www.kernel.org/doc/Documentation/CodingStyle)
Marsh Posté le 25-04-2012 à 03:17:11
Je me doutais que j'allais faire des grosses erreurs! J'ai commencé le C tout seul en autoformation il n'y a que 15 jours
Il m'a fallu 4 jours pour pondre cette fonction
Merci beaucoup pour ton aide!
Marsh Posté le 25-04-2012 à 00:48:39
Bonjour,
Je ne parviens pas à faire la liaison entre mon fichier "main.c" et le "header.h" que j'ai créé.
Pour alléger le main.c j'ai déplacé logiquement une partie du contenu dans le header.h
Voici le main.h
Et voici un résumé du header.h
Le programme se lance correctement. Je souhaite maintenant "importer" dans le main.c une chaine de caractère qui résulte des 80 lignes qui ne sont pas présentes.
Il s'agit d'un
Quels sont les problèmes ?