Saisir un tableau en c

Résolu/Fermé
hela - 16 oct. 2012 à 10:46
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 oct. 2012 à 14:26
Bonjour,
comment déclarer et saisir un tableau en c
A voir également:

1 réponse

Tsumiki Messages postés 2 Date d'inscription mardi 25 septembre 2012 Statut Membre Dernière intervention 16 octobre 2012 1
16 oct. 2012 à 11:23
Bonjour,

Pour déclarer un tableau en C, tu as plusieurs façons de faire. En voici trois façons principales.

Première façon :

La première façon consiste à déclarer ton tableau sans lui attribuer de valeurs. Voilà un exemple de code :

int monBeauTableau[4];

Deuxième façon :

La deuxième façon est pour créer ton tableau et lui attribuer des valeurs sur plusieurs lignes, de façon plutôt propre

int monBeauTableau[4];

monBeauTableau[0] = 16;
monBeauTableau[1] = 13;
monBeauTableau[2] = 507;
monBeauTableau[3] = 9;

Troisième façon :

Dans la troisième façon, on attribue les valeurs directement après la déclaration du tableau, sur la même ligne. C'est une méthode très pratique et plus courte, mais elle s'avère être moins lisible que la deuxième méthode:

int MonBeauTableau[4] = {16,13,507,9};

Ensuite, pour l'information, tu peux aussi mettre une variable dans les crochets, comme ceci :

int i = 4
int MonBeauTableau [i] = {16,13,507,8};


Voilà, j'espère que j'aurai pu répondre à ta question. Mais si jamais il existe une multitude de tutoriels sur le net. Il y avait aussi un article concernant les tableaux en C ici : https://www.commentcamarche.net/contents/120-langage-c-les-tableaux


Tsumiki
1
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 16/10/2012 à 13:38
Salut Tsumiki,

int i = 4; 
int MonBeauTableau [i] = {16,13,507,8}; 

Ce code donne "error: variable-sized object may not be initialized" avec gcc (il manquait aussi un ; à la fin de la déclaration et initialisation de i).

Il faut utiliser une directive #define pour ces valeurs constantes, qui sont alors remplacées par le pré-processeur (définies par convention en majuscules, pour les distinguer des variables).
#define MAX_ELEMENTS 4 
int MonBeauTableau [MAX_ELEMENTS] = {16,13,507,8};

Une autre façon de faire est de laisser le compilateur déterminer seul la taille à partir de la déclaration et initialisation en ligne.
int MonBeauTableau [] = {16,13,507,8};

Dal
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 oct. 2012 à 14:53
Plutot que le #define, il vaut mieux utiliser "const int i=4;" qui est plus propre.
En fait, pour être plus clair, en C on doit connaître la taille d'un tableaux à la compilation. Et seul une constante te l'assure.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 16/10/2012 à 18:52
Salut Char Snipeur,

Chez moi, gcc (MinGW) refuse de compiler ceci en C :
    const int i=4;    
    int MonBeauTableau [i] = {16,13,507,8};

avec la même erreur qu'en l'absence de const : "error: variable-sized object may not be initialized".

Mais en C++, en revanche, cela passe.


Dal
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
16 oct. 2012 à 18:58
Bonjour char Snipeur,

Non il faut mettre #define. Mettre une variable/constante pour définir la taille est de l'évolution ISO C99.

Cordialement
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 oct. 2012 à 23:34
Faut se mettre à la page les gars, le C99 est là autant l'utiliser :-p
0