J'ai un probleme avec un programme en C
driftman123
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
c'est quoi le probleme SVP je veux afficher le tableau avec une fonction :
|
|
|
|
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define n 2
struct produit {
char nom[30];
char code[30];
char date[10];
};
void remplissage_funct(struct produit tab_2[10])
{
int i;
for (i=1;i<=n;i++)
{
printf("Donner nom:"); scanf("%d",&tab_2[i].nom);
printf("Donner code:"); scanf("%d",&tab_2[i].code);
printf("Donner date:"); scanf("%d",&tab_2[i].date);
}
};
void affichage_funct(struct produit tab_2[10])
{
int i;
for (i=1;i<=n;i++)
{
printf("nom:%s,code:%s,date:%s",tab_2[i].nom,tab_2[i].code,tab_2[i].date);
}
};
int main(void)
{
struct produit tab[10];
remplissage_funct(tab);
affichage_funct(tab);
getch();
}
|
|
|
|
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define n 2
struct produit {
char nom[30];
char code[30];
char date[10];
};
void remplissage_funct(struct produit tab_2[10])
{
int i;
for (i=1;i<=n;i++)
{
printf("Donner nom:"); scanf("%d",&tab_2[i].nom);
printf("Donner code:"); scanf("%d",&tab_2[i].code);
printf("Donner date:"); scanf("%d",&tab_2[i].date);
}
};
void affichage_funct(struct produit tab_2[10])
{
int i;
for (i=1;i<=n;i++)
{
printf("nom:%s,code:%s,date:%s",tab_2[i].nom,tab_2[i].code,tab_2[i].date);
}
};
int main(void)
{
struct produit tab[10];
remplissage_funct(tab);
affichage_funct(tab);
getch();
}
A voir également:
- J'ai un probleme avec un programme en C
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
1 réponse
Bonjour,
Tout d'abord merci à l'avenir d'utiliser les balises de code et l'indentation : Ce que tu as posté est illisible. J'attirerai également ton attention sur les règles de politesse basique (Bonjour, merci, orthographe, minimum de soin dans la rédaction...).
Ensuite :
-Il n'y a pas besoin de ";" à la fin de la définition d'une fonction.
-Dans ton for dans la fonction remplissage_funct(), i va de 1 à n inclus (soit 2). Donc comme on indexe à partir de 0 en C, l'élément d'index 0 dans le tableau de struct passé en paramètre ne sera pas modifié, ainsi que les éléments ayant pour index 3, 4, 5... 9.
-Le type de fonction de remplissage_funct() est void, cela signifie que la fonction ne retourne rien. Les modifications apportées au tableau de struct passé en paramètre ne seront pas prises en compte sauf si tu passes en paramètre non pas le tableau, mais l'adresse du tableau. (voir pointeurs). Une autre solution serait de retourner le tableau modifié,
-le prototype du main indique que le type de retour de la fonction est un int.
Où est le retour?
-Tu t'es également un peu foiré dans tes accolades j'ai l'impression.
Voilà ce à quoi cela pourrait ressembler après correction, mais il pourrait y avoir des coquilles puisque je n'ai rien testé et que j'ai fait ça un peu vite-fait. Je t'invite donc à chercher par toi-même et au besoin à te replonger dans tes cours de C.
Note que je ne vois pas à quoi te sert le getch() dans le main.
Cdt,
Orinym
Tout d'abord merci à l'avenir d'utiliser les balises de code et l'indentation : Ce que tu as posté est illisible. J'attirerai également ton attention sur les règles de politesse basique (Bonjour, merci, orthographe, minimum de soin dans la rédaction...).
Ensuite :
-Il n'y a pas besoin de ";" à la fin de la définition d'une fonction.
-Dans ton for dans la fonction remplissage_funct(), i va de 1 à n inclus (soit 2). Donc comme on indexe à partir de 0 en C, l'élément d'index 0 dans le tableau de struct passé en paramètre ne sera pas modifié, ainsi que les éléments ayant pour index 3, 4, 5... 9.
-Le type de fonction de remplissage_funct() est void, cela signifie que la fonction ne retourne rien. Les modifications apportées au tableau de struct passé en paramètre ne seront pas prises en compte sauf si tu passes en paramètre non pas le tableau, mais l'adresse du tableau. (voir pointeurs). Une autre solution serait de retourner le tableau modifié,
-le prototype du main indique que le type de retour de la fonction est un int.
Où est le retour?
-Tu t'es également un peu foiré dans tes accolades j'ai l'impression.
#include<stdio.h> #include<string.h> #include<conio.h> #define n 10 struct produit { char nom[30]; char code[30]; char date[10]; }; void remplissage_funct(struct produit *tab_2[n]) { int i; for (i=0;i<n;i++) { printf("Donner nom:"); scanf("%d",&(*tab_2)[i].nom); printf("Donner code:"); scanf("%d",&(*tab_2)[i].code); printf("Donner date:"); scanf("%d",&(*tab_2)[i].date); } } void affichage_funct(struct produit tab_2[n]) { int i; for (i=0;i<n;i++) { printf("nom:%s,code:%s,date:%s",tab_2[i].nom,tab_2[i].code,tab_2[i].date); } } int main(void) { struct produit tab[10]; remplissage_funct(&tab); affichage_funct(tab); getch(); return (0); }
Voilà ce à quoi cela pourrait ressembler après correction, mais il pourrait y avoir des coquilles puisque je n'ai rien testé et que j'ai fait ça un peu vite-fait. Je t'invite donc à chercher par toi-même et au besoin à te replonger dans tes cours de C.
Note que je ne vois pas à quoi te sert le getch() dans le main.
Cdt,
Orinym