Bonjour j'ai un exercice dans celui ci j'ai créer un define N 10 ( a la demande)
j'ai ensuite créer une struct Tab qui contient uniquement un tableau de N entier.. seulement voilà impossible de modifier les valeurs dans le tableau via une fonction alors que la fonction qui y ajoute une valeur aléatoire viens du professeur.. :/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
typedef struct Tab Tab;
struct Tab
{
int tableau[N];
};
void remplirTableau(Tab t, int n)
{
int i ;
srand ( time(NULL) ); // initialise le random
for (i=0; i<n; i++)
t.tableau[i]= rand() % n; // t [ i ] recoit une valeur aleatoire modulo n
}// fonction du prof
int main()
{
Tab t = {0,0,0,0,0,0,0,0,0,0};
remplirTableau(t,N);
for(int i=0;i<N;i++)
printf("%d ",t.tableau[i]);
}
Il n'y a pas d'erreur seulement.. le tableau contient toujours 10 valeurs '0'...
Merci bien , donc si j'ai bien compris le code dois plus ressembler a celà ?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
typedef struct Tab Tab;
struct Tab
{
int tableau[N];
};
void remplirTableau(Tab *t, int n)
{
int i ;
srand ( time(NULL) ); // initialise le random
for (i=0; i<n; i++)
t.tableau[i]= rand() % n; // t [ i ] recoit une valeur aleatoire modulo n (Erreur)
}
int main()
{
Tab t = {0,0,0,0,0,0,0,0,0,0};
remplirTableau(*t,N);
for(int i=0;i<N;i++)
printf("%d ",t.tableau[i]);
}
Mais il m'indique une erreur me disant request for member 'tableau' in something not a structure or union
J'avais testé cette syntaxe seulement à mes yeux elle n'étais pas correct du à l'erreur a cette ligne
int main()
{
Tab t = {0,0,0,0,0,0,0,0,0,0};
remplirTableau(*t,N);// Erreur
for(int i=0;i<N;i++)
printf("%d ",t.tableau[i]);
}
L'erreur : invalid type argument of unary '*' (have 'Tab {aka struct Tab}')
je comprend que l'étoile pose soucis seulement en l'enlevement sa ne marche pas.. sa me fais penser a soulever une autre question toi qui semble t'y connaitre.. une erreur plus bas dans un code.. ne veut pas dire qu'il n'y a pas d'erreur plus haut si?
puisque la variable de type Tab c'est t (et pas un tableau)
J'ai juste fais sa pour initialiser t.tableau a 0 enfin les N valeurs (10) je pense pas que créer une fonction pour initialiser a 0 étais nécessaire pour si peu.. Tab t; n'initialisera pas à 0 j'imagine
Personnellement, quand je manipule un pointeur sur tableau, j'évite de lui donner le même nom qu'un tableau, ça prête à confusion. Par exemple si je définis :
void remplirTableau(Tab *pt, int n)
je vois immédiatement que 'pt' est un pointeur, du coup je minimise le risque d'écrire
pt.tableau[i]
au lieu de
pt->tableau[i]
Il est vrai que je n'ai jamais été à l'aise avec les pointeurs, du coup je préfère savoir en permanence si la variable que je manipule est un pointeur ou non.
- Edité par robun 8 décembre 2019 à 12:00:13
Modifier les valeurs tableau dans struct via fonct
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.