+ Responder ao Tópico



  1. #1

    Padrão Agora eh a vez do explode();

    Bom, passada a fase do str_replace agora meu problema eh o explode do php, que novamente eu preciso fazer em C, pra quem nao sabe o explode do php faz o seguinte:

    $broke=explode("atirei o pau no gato mais o gato nao morreu","o");
    //Entao a variavel $broke passaria a ser um vetor, ou matriz, chame como quizer

    resumidamente $broke ficaria da seguinte forma:
    $broke[1] == "atirei o"
    $broke[2] == " pau no"
    $broke[3] == " gato"
    ...
    e assim sucessivamente....
    e para complicar a vida de meus companheiros eu preciso fazer isso em C, mas soh sei que a funcao basica vai ser a strtok, e o meu maior problema eh que eu num sei como retornar vetores, so sei retornar ponteiros....

  2. #2

    Padrão Agora eh a vez do explode();

    Alguem se habilita a me ajudar??? nem que seja só com uma ideia como fizeram da outra vez com o str_replace????

  3. #3
    fricardo
    Visitante

    Padrão Agora eh a vez do explode();

    Tudo bem, SDM

    eu só conhecia a função strtok só de ouvir falar. Mas quando vi o seu caso resolvi ler sobre ela. Pelo q vc disse acho q não vai ter problemas com strtok pois ela é bem parecida com o explode() do PHP. Um exemplo de uso q peguei na Web:

    /* strtok example */
    #include <stdio.h>
    #include <string.h>

    int main ()
    {
    char str[] ="This is a sample string,just testing.";
    char * pch;
    printf ("Splitting string \"%s\" in tokens:\n",str);
    pch = strtok (str," ");
    while (pch != NULL)
    {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.");
    }
    return 0;
    }

    SAÍDA:

    Splitting string "This is a sample string,just testing." in tokens:
    This
    is
    a
    sample
    string
    just
    testing

    Espero ter ajudado,

    fricardo

    [ Esta mensagem foi editada por: fricardo em 23-09-2003 11:39 ]

    [ Esta mensagem foi editada por: fricardo em 23-09-2003 11:41 ]

  4. #4

    Padrão Agora eh a vez do explode();

    Grande rapaz!!!! eh exatamente isso q eu queria, mas, vc sabe como eh que eu faria pra retornar um vetor de vetores, pra retornar de uma funcao por exemplo:

    vet[1]=="Atirei"
    vet[2]=="o"
    ...
    vet[n]=="morreu"

  5. #5
    fricardo
    Visitante

    Padrão Agora eh a vez do explode();

    SDM,

    consegui modificar o programa que postei antes para os valores quebrados por strtok() sejam retornados num vetor. Código abaixo:

    /* strtok example */
    #include <stdio.h>
    #include <string.h>

    int main ()
    {
    char str[] ="This, is a sample string just testing.";
    char * pch;
    char *saida[20];
    int i;
    printf ("Splitting string \"%s\" in tokens:\n",str);
    saida[0] = strtok (str," ");
    i=1;

    while (saida[i-1] != NULL)
    {
    printf ("saida[%d] = %s\n",i-1,saida[i-1]);
    saida[i] = strtok (NULL, " ,.");
    i++;
    }
    return 0;
    }

    ****** SAIDA ********
    Splitting string "This, is a sample string just testing." in tokens:
    saida[0] = This,
    saida[1] = is
    saida[2] = a
    saida[3] = sample
    saida[4] = string
    saida[5] = just
    saida[6] = testing

    Espero que lhe ajude,
    fricardo

  6. #6

    Padrão Agora eh a vez do explode();

    Ajudo pra porra cara, mas se liga.....pra eu transormar isso em uma funcao to tipo char a declaracao dela deveria se mais ou menos assim: ne?

    char **explode(char *token,char *str);

    por que ai ele me retornaria o ponteiro de um vetor

  7. #7
    fricardo
    Visitante

    Padrão Agora eh a vez do explode();

    Exatamente, vc deve fazer assim ou então usar recursos de alocação dinâmica de memória. Sim, se vc puder depois poste os resultados.

  8. #8

    Padrão Agora eh a vez do explode();

    Blz...assim que tiver pronto eu disponibilizarei aqui, só que vai demorar um pouquinho pq eu tive que adiar um poco o projeto que eu to usando isso....
    Valeus...