Jump to content

Variavel por referencia


skinie18

Recommended Posts

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);
}

Link to post
Share on other sites

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
bubulindo

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

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);
}

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.