J'ai un probleme avec un programme en C

Fermé
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014 - 13 févr. 2014 à 23:01
 Utilisateur anonyme - 14 févr. 2014 à 06:56
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();
}

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.

#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
0