Bonjour,
J'ai une question tres bete, mais j'ai un trou :
comment faire un tableau à 2 dimensions avec dans la 1er colonne des char et dans la deuxieme des int?
comment le declarer??
Merci.
Bonjour,
J'ai une question tres bete, mais j'ai un trou :
comment faire un tableau à 2 dimensions avec dans la 1er colonne des char et dans la deuxieme des int?
comment le declarer??
Merci.
Impossible. Un tableau est composé de variables de même type.
Si tu veux utiliser des types différents, utilises une structure plutôt.
A noter que dans ton cas, tu peux t'en sortir avec un tableau de int. Un char "rentre" dans un int.
Nas'
tu peux pas.
dans ton cas je te propose de creer un struct qui contient un entier et un carctère, et de crée un tableau a 1 dimension qui contient tes structs.
par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 struct mesElements { int i; char c; }; void main() { struct mesElements monTableau[10]; }
ok, merci pour ces infos, je penses que je vais en effet opter pour la structure.
Si c'est possible :Envoyé par Nasky
tab[0] -> tableau d'entier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int tab_int[100]; char tab_char[100]; char tab[2] = { tab_int, tab_char };
tab[1] -> tableau de caractère.
Voilà
[edit]j'ai comme un doute, je regarderai lorsque j'aurai un compilateur C sous la main[/edit]
moi aussi j'ai douté. et comme j'ai un compilateur sous la main j'ai testé:Envoyé par gege2061
ça marche, mais avec un warning à la compilation:
E:\TESTS\tests.c(15) : warning C4047: 'initializing' : 'char ' differs in levels of indirection from 'int *'
E:\TESTS\tests.c(15) : warning C4047: 'initializing' : 'char ' differs in levels of indirection from 'char *'
Non c'est pas bon du tout, déjà avec :Envoyé par Biosox
ça sera un peu mieux mais toujours pas top, je vai y réflechir au calme un peu plus tard
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *tab[2]![]()
Je pense que le mieux et le plus propre est d'utiliser un tableau de structure, et puis ca reste une solution très flexible![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Biosox :Ce qui est effectivement la solution logique.Mais pour en revenir à la discussion (un peu académique ici certes) initiée par gege2061je te propose de creer un struct qui contient un entier et un carctère, et de crée un tableau a 1 dimensionImpossible. tab_int est du type int * et tab_char du type char*. Les deux sont de types differents et ne peuvent être mis dans un même tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Code: int tab_int[100]; char tab_char[100]; char tab[2] = { tab_int, tab_char };
Mais en continuant dans la même idée , on peut avoir
. De toute façon, pour l'utiliser , c'est coton de transtyper à chaque fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part void* tab[2] = { tab_int, tab_char };.
Tout ceci ne répond pas évidemment pas à la question initiale posée d'UN tableau, puisque maintenant on en a trois.![]()
Pour Gege, il serait plus exact d'écrire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int aiTab[NB_INT]; char acTab[NB_CHAR]; void* apvTab[2] = {aiTab,acTab}; //mais apres à utiliser c'est pourri ((int*)apvTab[0])[0] = (int) 1; ((char*)apvTab[1])[0] = (char) 1;
Pas possible. Un tableau est, par définition, une séquence d'objets identiques. Ce que tu veux faire, c'est soit un tableau d'int à 2 dimensions (le type 'char' est rarement utile, sauf pour les chaines),Envoyé par barucca
soit un tableau de structure,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int tab[N][2];
Comme il risque d'y avoir un trou entre a et b, pas sûr qu'on gagne de la place...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 struct elem { char a; int b; }; struct elem tab[N];
Personellement, si la place est en jeu, je préfère optimiser mes structures en utilisant des champs de bits, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 struct elem { unsigned a:8; unsigned b:16; /* selon les besoins... */ };
la structure ca marche impec!!! merci a tous!![]()
Partager