skinie18 1 Posted January 19, 2011 Report Share Posted January 19, 2011 Boas o meu problema e que nao percebo muito de structs mas o que eu queria era passar um vetor por referencia para uma funçao e o main recebesse de volta o vector modificado, ou seja mais o menos isto: typedef struct id { char name[10]; char pass[10]; } ID; ID verify(ID conf[50], int i) { printf("Insert Name: "); scanf("%s", conf[i].name); printf("Insert Pass: "); scanf("%s", conf[i].pass); return conf; } int main(int argc, char** argv) { ID conf[50]; int i; conf = verify(conf, i); i++; printf("%s \n", conf[i].name); printf("%s \n", conf[i].pass); return (EXIT_SUCCESS); } ISEP - Engenharia Informática @skinie18 & fb/skinie18 Link to post Share on other sites
Baderous 31 Posted January 19, 2011 Report Share Posted January 19, 2011 Apenas tens de alterar o cabeçalho da função verify para: ID verify(ID *conf, int i, int len) One len será o tamanho do vector (50). Invocas assim: verify(conf,i,50) EDIT: Ao passares o vector por referência não precisas de fazer return dele porque ele é alterado na própria função, e essas alterações são verificadas na main. Link to post Share on other sites
skinie18 1 Posted January 19, 2011 Author Report Share Posted January 19, 2011 nao entendo para que preciso do len ISEP - Engenharia Informática @skinie18 & fb/skinie18 Link to post Share on other sites
Baderous 31 Posted January 19, 2011 Report Share Posted January 19, 2011 Tens razão, não precisas. Só precisavas se quisesses percorrer o array até ao seu limite, por exemplo. Link to post Share on other sites
bubulindo 102 Posted January 19, 2011 Report Share Posted January 19, 2011 Tens razão, não precisas. Só precisavas se quisesses percorrer o array até ao seu limite, por exemplo. E não tivesses o \0 na última posição. :\ include <ai se te avio> Mãe () { } Link to post Share on other sites
Baderous 31 Posted January 19, 2011 Report Share Posted January 19, 2011 E não tivesses o \0 na última posição. :\ Isso só se verifica para strings, o que não é este caso. Link to post Share on other sites
skinie18 1 Posted January 19, 2011 Author Report Share Posted January 19, 2011 fiz as alteraçoes e nao funciona de fora correcta: typedef struct id { char name[10]; char pass[10]; } ID; ID verify(ID *conf, int i) { printf("Insert Name: "); scanf("%s", conf[i].name); printf("Insert Pass: "); scanf("%s", conf[i].pass); } int main(int argc, char** argv) { ID conf[50]; int i; verify(conf, i); i++; printf("%s \n", conf[i].name); printf("%s \n", conf[i].pass); return (EXIT_SUCCESS); } ISEP - Engenharia Informática @skinie18 & fb/skinie18 Link to post Share on other sites
jpedro20 2 Posted January 19, 2011 Report Share Posted January 19, 2011 Tens que inicializar o i. Tás a colocar na posição i sem ainda o teres definido. Link to post Share on other sites
Baderous 31 Posted January 19, 2011 Report Share Posted January 19, 2011 Uma vez que não retornas nada, o tipo de retorno será void e não ID. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now