Error Returning Two-D Matrix in C

0

Next, I have a ReadData function, which receives all information from a txt file, after that I use the BreakStringComplete function to separate this string by the delimiter "\ n" inside the function, through printf I can see that the lines were correctly separated and copied into an array of strings. The problem is that after finishing the break there is no return and failure of targeting. I think it is within the while (token! = NULL) that the error is, but I am not able to identify, I am waiting for help from the members:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "/opt/azulaoServer/headers/urls.h"


typedef struct endereco
{
  char logradouro[30];
  char numero[4];
  char bairro[20];
  char estado[2];
  char cidade[30];
  char cep[15];
  }Endereco;

typedef struct Cliente
    {

     char cpf[13];
    char realName[60];
    char sexo[11];
    char key[15];
    char data[11];
    Endereco endereco;

}Cliente;



   char **QuebrarStringCompleta(char *string)
  {

   char **linha;
   char *token;
   int tamVetor = 1;

   int i = 0;

          linha  = malloc(sizeof(char*)*tamVetor);

   linha[i] = malloc(sizeof(char**)*150);

   token = strtok(string, "\n");

   strcpy(linha[i], token);
   printf("primeira linha e: %s\n", linha[i]);

   i++;
   tamVetor++;


while (token != NULL)
    {


    linha = realloc(linha, sizeof(char*)*tamVetor);

   linha[i] = malloc(sizeof(char**)*150);

   token = strtok(NULL, "\n");

   strcpy(linha[i], token);
   printf("linha e: %s\n", linha[i]);

   i++;       
   tamVetor++;




            }
   printf("chegamos antes do return\n");
  return linha;
   }



  Cliente QuebrarStruct( char *string)
 {
    printf("a fincao foi chamda para quebrar a strict\n");

    printf("a string aqui e : %s\n", string);

Cliente cliente;
char *token;

token = strtok(string,",");
 printf("passou telo token, ele e %s\n", token);
    strcpy(cliente.cpf, token);

        printf("cliente.cpf e: %s\n", cliente.cpf);

        token = strtok(NULL,",");
printf("passou telo token e: %s\n", token);
    strcpy(cliente.realName, token);

        printf("cliente.realName e: %s\n", cliente.realName);


        token = strtok(NULL,",");
     printf("passou pelo token de separar o sexo\n");
    strcpy(cliente.sexo, token);
    printf("antes do printf\n");
    printf("sexo do cliente e: %s\n", cliente.sexo);

    /*
        token = strtok(NULL,",");

    strcpy(cliente.email, token);

    */
    printf("antes do tokrn, para separar a data\n");
        token = strtok(NULL,",");
        printf("passou pelo token de separar a data\n");

    strcpy(cliente.data, token);
        printf("data do cliente e: %s\n", cliente.data);

        printf("dados e, usuario: %s, nome real: %s, sexo: %s, data: %s\n", cliente.cpf,cliente.realName, cliente.sexo, cliente.data);
    return cliente;

}




char * LerDados(int flag)
{

Cliente cliente;

FILE *users;                // cria variável ponteiro para referenciar na 
                            // memoria um tipo de arquivo txt, no caso o
                            // user.txt





// url q se encontra o arquivo users.txt


// # define BUFFER_SIZE 1024 
// char buf [ BUFFER_SIZE ] ; 



// abrindo o arquivo com tipo de abertura w

 if (flag == 1)
 {  
  users = fopen(url, "r");

 }
 if (flag == 2)
{
users = fopen(urlprodutos,"r");

}

if (flag == 4)
{
    users = fopen(urladmin,"r");

}

if (flag == 5)
{
    users = fopen(urladminsKeys,"r");

}
    char *auxiliar;


// testando se o arquivo foi realmente criado
 if (users == NULL)
 {
    printf("Erro na abertura do arquivo!");
    return 1;
  }
  else
  {

    char *lido;



    int i = 0;
    char *string;
    int tamVetor = 0;

    int a = 0;
    char *string2;
    int tamVetor2 = 0;

            char *pch;
    char *token;
    char comparador[15];

        int flag = 1;

        strcpy(auxiliar,"");

    string = malloc(sizeof(char **) * tamVetor);


    string2 = malloc(sizeof(char **) * tamVetor2);

     while ((lido = fgetc(users)) != EOF)
    {
        if (lido == '#')
        {

            while ((lido = fgetc(users)) != EOF)
            {

    printf("lido tem: %c\n", lido);
                string[i] = lido;
                                    strcat (auxiliar, string);
//      printf("copiou\n");

                tamVetor++;

                string = realloc(string, sizeof(char *) * tamVetor);



                            }
                    }
             }
            printf("String e : %s\n", auxiliar);

    }


            return auxiliar;

}



int main ()

 {


 char *string;
 char **result;



 string = LerDados(1);

 printf("String e %s: ", string);


 result = QuebrarStringCompleta(string);

//result = matrizExemplo();
 printf("as linhas separadas sao: ");

 for(int i = 0; i < 5; i++)
{
  printf("%s\n", result[i]);   

} 
}
    
asked by anonymous 27.06.2018 / 01:59

0 answers