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
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
A voir également:
- Declarer un tableau de type variable en c
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
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
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; }
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
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
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
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
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.
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
8 janv. 2011 à 22:21
je suis sous linux je compile par gcc -c ...
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
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.
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
9 janv. 2011 à 00:34
mais le probleme il accepte vect1[100]
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
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
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
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
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,
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,
pour faire ça tu corrige ton typedef; c pa correct
la tu porra faire :
typedef struct data *data;
la tu porra faire :
data d = ....... d->le_champ_de_ta_structure_au_quel_tu_veux_acceder
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
9 janv. 2011 à 12:33
merci de me repondre mais toujours sa marche pas
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
9 janv. 2011 à 13:48
je vous rappel que je developpe une application RPC
merci
merci
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
9 janv. 2011 à 13:49
T'as essayé ce que je t'ai dit ?
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
9 janv. 2011 à 14:11
oui j'ai fait
j'ai essayé un tableau de taille 100 sans probleme mais 700 il plante
merci
j'ai essayé un tableau de taille 100 sans probleme mais 700 il plante
merci
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
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...
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...
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
9 janv. 2011 à 14:36
je vais essayer de les envoyer par partis
merci
merci
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
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
clnt = clnt_create (host, PROD, VERSION_UN, "tcp");
j'ai pu transferer transferer un tableau jusqu'a 400000