Boucle ne s'éxécute pas

Résolu
Niwrad Messages postés 4 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 5 avril 2009 - 14 mars 2009 à 11:37
Niwrad Messages postés 4 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 5 avril 2009 - 14 mars 2009 à 13:10
Bonjour à tous,

Je suis plus ou moins débutant en programmation C,

Je souhaite créer un programme (console) m'affichant une pyramide
d'étoiles en fonction du nombre de lignes entré par l'utilisateur. Cela
fonctionne un peu de cette façon :

4 lignes :

*

* *

* *

*****

Je ne vous demande pas le code (evidemment je souhaite le trouver
tout seul) mais j'ai un petit problème lors de mes essais, voici le
code source :


#include <stdio.h>
#include <stdlib.h>
#include"lines.h"

int main()
{
int nbl=5;
int j=(nbl-1);

void firstLine(j);
return 0;
}





et l'header :

#ifndef LINES_H_INCLUDED
#define LINES_H_INCLUDED

void firstLine(int j)
{
int i=0;
do{
printf(" ");
i++;
}while (i<j);
printf("#\n");
}
#endif // LINES_H_INCLUDED

Mon problème est le suivant : lorsque je lance le programme, rien
ne s'affiche, pas un espace ou un #. J'ai l'impression de n'avoir fait
aucune erreur de syntaxe et mon compilateur (code::blocks) ne m'affiche
aucune erreurs non plus.

Merci de me dire pourquoi mon petit bout de code ne fonctionne pas.

Amicalement, Niwrad

4 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2009 à 12:04
salut

on ne met jamais de code dans un .h (sauf pour une macro)

ensuite, ce que t'as mis dans ton main n'etait pas un appel de fonction.

bon, sinon, je te conseille d'utiliser des boucles for plutot que des do while.

#include <stdio.h>
#include <stdlib.h>
#include "lines.h"

void firstLine(int j)
{
int i=0;
do{
printf(" ");
i++;
}while (i<j);
printf("#\n");
}

int main()
{
int nbl=5;
int j=(nbl-1);
firstLine(j);
return 0;
}



et l'header :

#ifndef LINES_H_INCLUDED
#define LINES_H_INCLUDED

void firstLine(int j);

#endif // LINES_H_INCLUDED


bon, ce code n'affiche pas la pyramide, mais au moins il appelle ta fonction.
3
Niwrad Messages postés 4 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 5 avril 2009
14 mars 2009 à 12:14
En effet merci pour votre aide coucou747, je n'avais pas fait attention.
Mon problème est donc résolu.
En revanche, j'ai une petite question à vous poser : pourquoi créer un header avec juste les déclarations de fonctions ?? Je croyais qu'il fallait s'en servir dans le but de soulager le code principal.

En tout cas, merci pour votre réponse rapide.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2009 à 12:31
ca sert a separer son code dans plusieurs fichiers, tu declares dans ton header les fonctions accessibles par les autres fichiers.

bon, je te donne un exemple : tu mets plus de 6h pour compiler firefox ou OOo (sur un core2) et donc t'imagines si t'avais tout ton code dans un seul fichier, a chaque fois que tu mofifies un fichier, tu dois recompiler tout ton code et tu t'en prends encore pour 6h...
separer en plusieurs fichiers, ca permet de ne pas avoir a recompiler tout ton code a chaque fois, tu ne recompiles que les fichiers modifies.

chaque fichier .c est compile en un fichier .o
ensuite, t'as une etape de link qui lie tout les fichiers .o en un executable (ld sous linux)

et bon, c'est sur que pour des projets genre firefox ou OOo, ld c'est violent (il parait que ld consomme 2go de ram pour lier OOo).
0
Niwrad Messages postés 4 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 5 avril 2009
14 mars 2009 à 13:10
D'accord, merci pour ta réponse et bonne continuation.
0