Declarer un tableau de type variable en c

Fermé
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 8 janv. 2011 à 19:03
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 - 9 janv. 2011 à 21:27
Bonjour,


comme le titre dit comment declarer un tableau de type variable en c?

merci.
A voir également:

5 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
8 janv. 2011 à 19:23
Tu peux créer un tableau de pointeur, et utiliser n'importe quel pointeur dedans...

#include "stdio.h"

int main()
{
	void* tab[10]; // tableau de pointeurs

	int i=3;
	char texte[10]="bonjour";

	tab[0]=&i;
	tab[1]=texte;

	printf("%d %s\n", * (int*) tab[0], (char*) tab[1]); // 3 bonjour

	return 0;
}
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
8 janv. 2011 à 21:23
merci de me repondre
je develope un programme rpc et je ne peux pas dfinir un tableau de 700 case

struct data {
int m;
double vect1[700];
double vect2[700] ;
int lon;
};

typedef struct data data;

et quand j'execute le programme client j'aurai cet erreur

call failed: RPC: Can't encode arguments
merci
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
8 janv. 2011 à 21:31
Avec Visual Studio, il n'y a pas de problème pour ce code. Néanmoins tu devrais éviter d'appeler de la même manière ta structure data et ton type data, ça peut être ambiguë pour ton compilateur.
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
8 janv. 2011 à 22:21
je suis sous linux je compile par gcc -c ...
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
8 janv. 2011 à 22:24
gcc ou Visual Studio ne devrait rien changer, le code est bon, excepté cette double dénomination de data qui pourrait être pris pour une erreur.
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 00:34
mais le probleme il accepte vect1[100]
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 11:55
dans un tuto je l'ai lu qu'il faut le decalrer comme ceci
int vect1<> dans ma structure

donc moi j'essaye d'y acceder avec data->vect1[1]

mais jaurai cet erreur

prod_client.c:18: error: subscripted value is neither array nor pointer
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
9 janv. 2011 à 12:10
Juste comme ça.
Pourquoi tu cherches une erreur dans ton code alors qu'il n'y en a pas ?
Tu dis que tu as le message : "call failed: RPC: Can't encode arguments"
C'est la preuve que ton compilateur marche puisque t'obtiens cette erreur à l'exécution non ? Ne serait-ce pas dû au fait que tes tableaux sont trop grands pour être envoyés en RPC ? Essais d'envoyer des données beaucoup plus petites pour tester.
Cdlt,
0
pour faire ça tu corrige ton typedef; c pa correct
typedef struct data *data;

la tu porra faire :
data d = .......
d->le_champ_de_ta_structure_au_quel_tu_veux_acceder
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 12:33
merci de me repondre mais toujours sa marche pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 13:48
je vous rappel que je developpe une application RPC
merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
9 janv. 2011 à 13:49
T'as essayé ce que je t'ai dit ?
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 14:11
oui j'ai fait
j'ai essayé un tableau de taille 100 sans probleme mais 700 il plante

merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
9 janv. 2011 à 14:16
Beh voilà, t'as la solution à ton problème.
Preuve est que ton code marche très bien et que le problème vient du protocole RPC qui t'impose l'envoi de petits paquets.
A toi de faire des découpes...
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 14:36
je vais essayer de les envoyer par partis

merci
0
yuri648 Messages postés 677 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 20 mai 2015 7
9 janv. 2011 à 21:27
j'ai reglé le probleme en connectant par tcp au lieu de udp

clnt = clnt_create (host, PROD, VERSION_UN, "tcp");
j'ai pu transferer transferer un tableau jusqu'a 400000
0