Ir ao conteúdo
  • Cadastre-se

C Retornar um vetor em outra função


Posts recomendados

Olá pessoal, seguinte eu tenho uma função de verifica o RG no banco de dado, segue o código:

int verificar_rg(int tipoPessoa){

    MYSQL conexao;
    MYSQL_RES *result;
    MYSQL_ROW row;
    int i, num_fields, sql, tipo;
    char query[150],rg[10];
    mysql_init(&conexao);

        tipo = tipoPessoa;



    printf("Digite o seu rg:"); //Aqui eu pego o RG do usuario
    scanf("%s",&rg);
  		
  	//verifico se existe no banco...
    if ( mysql_real_connect(&conexao, "localhost", "root", "", "teatro", 0, NULL, 0) ){

        if (tipo == 1 || tipo == 2 || tipo == 3){
        sprintf(query, "select id from tb_usuarios where rg = '%s';",rg);
        }
        else
            {
                sprintf(query, "select id from tb_convidado where tb_convidado_rg = '%s';",rg);
            }
        sql = mysql_query(&conexao, query);

        result = mysql_use_result(&conexao);


         if (mysql_fetch_row(result) == 0)
             {
                 printf("Rg nao registrado!! \n ");
                 system("pause");
                 main();
             }

}
	//retorno o rg aqui para usar em outra função
    return rg [10];
}

    porém o problema mora aqui, eu tento retornar este meu vetor RG[10] na seguinte função:

 

void reservarProfessores(char matriz[2][10]){
    int row, col;
    char rg[10];

    rg[10] = verificar_rg(); <----------------- //aqui eu tento pegar o rg
    
    printf("\n\n         RESERVA DE CADEIRAS\n\n");
   row =linhaX();
   col = colunaY();
   if(matriz[row][col]=='.' ){
       matriz[row][col] = 'R';
       system("cls");
         //   printf("   Digite o seu rg novamente:");
           // scanf("%s",&rg);
            system("cls");
                MYSQL conexao;
			    MYSQL_RES *result;
			    MYSQL_ROW rows;
			    int i, num_fields, res;
			  	char query[150];
			  	     mysql_init(&conexao);

                        if ( mysql_real_connect(&conexao, "localhost", "root", "", "teatro", 0, NULL, 0) ) {
                            sprintf(query,"UPDATE tb_usuarios SET lugar_x='%i', lugar_y='%i' where rg = '%s';",row,col,rg);
                            res = mysql_query(&conexao,query);
                            if (!res)
                                printf("\n\n      RESERVA EFETIVADA COM SUCESSO !!\n \n");
                            else
                                printf("Erro na inser��o %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
                            mysql_close(&conexao);
                        }else{
                            printf("Falha de conexao\n");
                            printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
                            }

                        system("pause");
                }




   else if (matriz[row][col]=='X'){
             printf("\n\n      CADEIRA JA OCUPADA!! ESCOLHA OUTRA !!\n\n");}
        else if(matriz[row][col]=='R'){
               printf("\n\n      CADEIRA JA RESERVADA !! ESCOLHA OUTRA !!\n\n");}

    getch();


}

rg[10] = verificar_rg(); não funciona ele dá o seguinte erro:

 

 

image.png.d69bd8364e6cc8d36f57a869c053a1a6.png

 

eu estou fazendo o retorno de forma errada? Por favor me ajudem.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Matheus Miranda Souza     você está retornando apenas um caractere que está na posição dez desse vetor rg e sendo que nele não existe a posição dez ,  e esse mysql não sei como funciona , mas para retornar o valor do rg você pode usar ponteiros , então sua função verificar_rg()  pode ser assim  :

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int verificar_rg(char **ret,int tipoPessoa){

    /*MYSQL conexao;
    MYSQL_RES *result;
    MYSQL_ROW row;*//* não sei o que isso significa       */
    int i, num_fields, sql, tipo;
    char query[150],rg[10];
    /*mysql_init(&conexao); não sei o que isso significa !     */

        tipo = tipoPessoa;



    printf("Digite o seu rg:"); /* Aqui eu pego o RG do usuario    */
    scanf("%s",rg);
    strcat( *ret, &rg );/* retorna  a string com o rg    */

/*  	//verifico se existe no banco... >>>>  esse trcho aqui todo não sei para que serve  <<<<

        if ( mysql_real_connect(&conexao, "localhost", "root", "", "teatro", 0, NULL, 0) ){

        if (tipo == 1 || tipo == 2 || tipo == 3){
        sprintf(query, "select id from tb_usuarios where rg = '%s';",rg);
        }
        else
            {
                sprintf(query, "select id from tb_convidado where tb_convidado_rg = '%s';",rg);
            }
        sql = mysql_query(&conexao, query);

        result = mysql_use_result(&conexao);


         if (mysql_fetch_row(result) == 0)
             {
                 printf("Rg nao registrado!! \n ");
                 system("pause");
                 main();
             }

    }
	//retorno o rg aqui para usar em outra função
    return rg [10];     */
}
int main( ){
    char * MSG[] = { "Alpha", "Beta", "Gamma", "Delta", "Episilon", "Zeta", "Eta", "Theta", NULL };
    char vetor[100] = {0};
    char * paux = &vetor[0];
    int tipoPessoa = 0;

    verificar_rg(&paux,tipoPessoa); /*<-----------------   aqui eu tento pegar o rg  */

    printf("valor retornado = %s\n", vetor );
    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...