(ouvrir ) compiler et exécuter un fichier incluant un prototype

Fermé
eugenieraza - 14 juin 2015 à 14:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 juin 2015 à 21:58
Bonjour,
Mon problème est difficile à expliquer : j'apprends à faire un prototype pour m'entraîner à parcourir un tableau.
<code .h>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>



parcourirTableauNombre(tableau[4]); // prototype

parcourirTableauNombre(tableau[4]) //La fonction que je veux créer

{

int tableau[4];
for (i = 0 ; i < 4 ; i++)
{

printf("%d\n, tableau[4])";
}

return 0;

}

/*un fichier .h préfabriqué par moi,à inclure dans un fichier pour manipuler
chaque fois que j'ai besoin de parcourir un tableau.

Message du compilateur:

"
Nothing to be done (all items are up-to-date).

Checking for existence: C:\Users\Fiona\OneDrive\Documents\tableau_c_perso\parcourirTableauNombreFonction.exe
"
  • /


comment fait-on pour vérifier s'il y a une erreur? parce que le compilateur me crée quand même un .exe et ne veut plus charger et compiler le fichier principal.
<code.c>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "parcourirTableauNombreFonction.h"

int main(int argc, char *argv[])
{
int tableau[4], i = 0;

tableau[0] = 10;
tableau[1] = 23;
tableau[2] = 505;
tableau[3] = 8;

parcourirTableauNombreFonction(tableau[4]);
printf("%d", tableau[i]);
return 0;
}


A voir également:

2 réponses

Salut, tu est sous quel IDE ? Il se peut que l'IDE ne tiens pas compte des modifications dans les header lors de la vérification de "changements".
De toute façon il vaut mieux mettre les prototypes dans des header et les fonctions dans des fichiers c.
0
eugenieraza
14 juin 2015 à 20:48
Bonsoir JWTdd, j'utilise code_block. Tu dois avoir raison parce que j'ai voulu testé un code (qui n'est pas de moi) qui devrait marcher parce que c'est un exemple dans un cours mais ça ne compile pas il trouve toujours une erreur. C'est dans "le passage de tableaux à 1 fonction.
<code C>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void affiche(int *tableau, int tailleTableau);
int main(int argc, char *argv[])
{
int tableau[4] = {10, 15, 3};

// On affiche le contenu du tableau
affiche(tableau, 4);

return 0;
}

void affiche(int *tableau, int tailleTableau)
{
int i;

for (i = 0 ; i < tailleTableau ; i++)
{
printf("%d\n", tableau[i]);
}
}

------
le message d'erreur:
expected declaration or statement at end of input

et je ne sais pas ce que ça veut dire donc comment la corriger
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841 > eugenieraza
14 juin 2015 à 21:09
Il y a des erreurs dans ton code...
Consulte mon message #2.
Cdlt,
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
14 juin 2015 à 19:48
Bonjour,

parcourirTableauNombre(tableau[4]); // prototype
Ton prototype est faux. C'est plutôt :
int parcourirTableauNombre( int tableau[4]);


Du code dans le header, oublie. C'est une très mauvaise idée. Dans le header, tu mets les prototypes et dans le .c ton code.

printf("%d\n, tableau[4])";
tableau[4] n'existe pas. Le dernier élément est : tableau[3]...
Toi, ce que tu souhaites c'est d'afficher chacun des éléments du tableau, donc
printf("%d\n, tableau[i])"; 


parcourirTableauNombreFonction(tableau[4]);
Pour appeler la fonction avec le tableau en paramètre, il faut enlever [4]. Donc :
parcourirTableauNombreFonction(tableau); 


printf("%d", tableau[i]);
Il vaut mieux mettre un espace, sinon tout sera collé. De plus, il manque une boucle for.

Cdlt,
0
eugenieraza
14 juin 2015 à 21:13
Bonsoir Fiddy,
Et merci pour ta réponse. Mais je suis débutante et je ne comprend pas tout.
1 Je vois que j'ai j'ai mis <code.h> parce que je ne savais comment le présenter mais c'est bien le prototype que je mets dedans.
2 d'après ta correction je vois déjà que j'ai oublié le type int
3 c'est bien tableau [4] dans mon exercice. Quand on ne met que 3 éléments dans le tableau [4], le dernier élément, contenu dans tableau[3] est "0" (d'après le cours que j'ai vu.
4 afficher chacun des éléments du tableau : j'ai mis tableau[i] effectivement la 1ère fois mais ça n'a pas marché donc j'ai changé pour voir ce que ça donne mais toujours pareil, ça compile mais n'affiche qu'une valeur en fait.
y a t-il un moyen de joindre un imprim'ecran (j'en ai fait) dans les réponses?

je réessaie avec tes corrections (pas aujourd'hui, je suis saturée), je te tiens au courant .
Je suis vraiment tout au début, chapitre 2!
bonsoir
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
Modifié par fiddy le 14/06/2015 à 21:36
Je vois que j'ai j'ai mis <code .h> parce que je ne savais comment le présenter mais c'est bien le prototype que je mets dedans.
Dans ton post, tu as mis parcourirTableauNombre(tableau[4]) //La fonction que je veux créer
{
int tableau[4];
for (i = 0 ; i < 4 ; i++)
{
printf("%d\n, tableau[4])";
}
return 0;

dans le .h. Et ça, il faut éviter. On ne met que les prototypes. Ce bout-là ne représente pas le prototype. Le prototype c'est :
int parcourirTableauNombre(int tableau[4]); // prototype 
.

c'est bien tableau [4] dans mon exercice. Quand on ne met que 3 éléments dans le tableau [4], le dernier élément, contenu dans tableau[3] est "0" (d'après le cours que j'ai vu.
Euh... attention à ne pas partir dans toutes les directions. Sinon on ne va pas pouvoir t'aider efficacement. Dans ton premier post, tu as mis tableau[0] = 10;
tableau[1] = 23;
tableau[2] = 505;
tableau[3] = 8;

Donc le dernier élément n'est pas 0.

Après effectivement, si tu fais : int tableau[4] = {10, 15, 3}; tableau[3] vaudra 0.

Toujours dans ton premier post, tu as mis printf("%d\n, tableau[4])";
Et ça ce n'est pas bon puisque tu souhaites afficher tableau[4] alors que le dernier élément est tableau[3]...

Je te conseille de tout relire, de corriger avec mes remarques et de poster le résultat. On te fera nos remarques sur ce code.
Note : pour poster un code, utilise la balise <code c>. Exemple :
<code c>ici tu mets ton code</code>.
0
eugenieraza > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
17 juin 2015 à 13:23
j'ai relu, j'ai enlevé les codes et n'a laissé quele prototype, j'ai corrigé les oublis de type mais ça ne fonctionnait toujours pas. Je réessaierai plus tard parce que j'ai un contrainte temps pour rendre des devoirs alors il faut que j'avance dans les leçons. peut être que le même problème se reposera et j'aurai un déclic pour me corriger? c'est frustrant parce que ça ne doit pas tenir à grand-chose. Et à chaque exercice j'ai un petit quelque chose qui cloche!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841 > eugenieraza
17 juin 2015 à 21:58
C'est pour ça que je t'ai proposé de reposter ton nouveau code :
"[...] et de poster le résultat. On te fera nos remarques sur ce code.
Note : pour poster un code, utilise la balise <code c>. Exemple :
<code c>ici tu mets ton code</code>.
0