Retourner un vecteur se trouvant dans une fonction

did2604 Messages postés 29 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 19 août 2008 - 27 nov. 2003 à 20:26
did2604 Messages postés 29 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 19 août 2008 - 27 nov. 2003 à 22:07
Bonsoir,

J'ai une fonction qui traite les élements d'un tableau (t) et les met dans un vecteur (v2). Une fois cela fait, je demande à ce que les valeurs contenues dans le vecteur soient retournées au programme pour un nouveau traitement ultérieur et je quitte la fonction. Voici en simplifié (juste le prototype et la fonction) le programme. L'erreur qu'il me retourne est : see declaration of 'write_vec' :
___________________________________________________
void write_vec (int *,int *);
-----
-----
-----
void write_vec (int *t,int *v2)
{
int c,l,u,vt2;
for (c=0,vt2=0,u=0;c<10;c++)
{
for (l=0;l<100;l++)
{
if (*(t+l*10+c)!=VNUL)
{ v2[u]=*(t+l*10+c);
u=u+1; vt2++;
}
}
}
return (*v2,vt2);
}
___________________________________________________
Bon, je me doute bien que le problème vient du protocole, ce n'est pas "void write_vec (int *,int *);" mais par exemple "int write_vec (int *,int *);" si je retourne des int. Mais il n'en veut pas (ce sont des entiers dans le vecteur). Que dois-je exactement utilisé dans mon prototype ?

Merci d'avance. Si je n'ai pas été clair assez, n'hésitez pas à me le signaler.

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 nov. 2003 à 20:38
Pas besoin de retourner quoi que ce soit puisque l'appelant fournit le pointeur, il l'a donc deja.
BruNews, ciao...
0
did2604 Messages postés 29 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 19 août 2008
27 nov. 2003 à 20:48
Merci pour ta réponse :)
Si je retourne rien, je n'ai pas d'erreur, mais je n'ai pas de résultat non-plus, car le vecteur v2 ainsi que la variable vt2, je les réutilise par après dans mon programme (en fait dans une autre fonction), donc j'en ai bien besoin ?! :question)

J'ai le code source complet à disposition sur http://didier2604.free.fr/ dans /sources C/dossiers/dossier04.cpp si mes explications ne sont pas très claires :) (attention, version beta ;-))

Merci encore.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 nov. 2003 à 21:23
Bon cette fois j'ai regarde, en fait tu as juste besoin de retourner vt2 var le pointeur v2 est lui immuable donc connu de l'appelant.
Devient donc:
int write_vec (int *t,int *v2)
{
int c,l,u,vt2 = 0;
for(c=0,u=0;c<10;c++) {
for (l=0;l<100;l++) {
if(*(t+l*10+c)!=VNUL) {v2[u]=*(t+l*10+c); u++; vt2++;}
}
}
return vt2;
}

BruNews, ciao...
0
did2604 Messages postés 29 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 19 août 2008
27 nov. 2003 à 22:07
Merci bien pour la réponse, je vais essayer ça :)
Et surtout merci de m'avoir aidé à comprendre mon erreur, c'est le principal ;)

Bonne soirée Brunews.
0
Rejoignez-nous