+ Responder ao Tópico



  1. #1

    Padrão str_replace pra C

    Eu to desenvolvendo um programa em C que precisa usar uma função tipo a str_replace do PHP, so que pelo q eu vi, nativamente num tem nada, ou seja eu vou precisar criar a funcão......se alguem puder me dar uma luz de por onde começar, eu agradeceria............

  2. #2

    Padrão str_replace pra C

    alguem pelo amor de deus, alguem me ajude, eu prometo que quando a funcao tiver pronta eu coloco ela aqui pra quem quizer usar.... <IMG SRC="images/forum/icons/icon27.gif">

  3. #3
    Solver
    Visitante

    Padrão str_replace pra C

    Eu naum conheço PHP mas vc quer q a função te retorne oq ? e qtipo de dado vc vai receber, STR?


    FALOU&acute;S <IMG SRC="images/forum/icons/icon21.gif">

  4. #4

    Padrão str_replace pra C

    Bem... eu estou aqui para ajudar voce.. (jah dizia o vendedor de porta em porta)..
    Mas antes preciso que voce me ajude, e descreva, exatamente o que essa funcao faz.

    pelo nome, eu entendi que seria algo que trate uma string.. e mude algo nela.. mas preciso que vc seja claro, se nao tiver ela nativa e eu tiver ela jah pronta..eu posto aqui.

  5. #5

    Padrão str_replace pra C

    A função que eu preciso tem que funcionar mais ou menos assim:

    Eu tenho a variavel char *str1 que contem "atirei o pau no gato" ;
    Tem a variavel char *str2 que contem "cachorro";
    E tem a variavel char *str3 que contem "gato";

    Eu quero que seja substituida a str3 por str2 na str1, ou seja apos ser executada a função, ela me retornaira (ou atribuiria à variavel str1) o seguinte:

    "atirei o pau no cachorro"

  6. #6

    Padrão str_replace pra C

    Cara.. isso eh bem dificil, no delphi eh facinho ... eu ate tenho o programa (faculdade... hehe) mas, voce teria um certo trabalho.

    funcionaria assim...

    use um laco e encontre a palavra, guarde a posicao dela em um variavel, copie a str1 em um str_auxiliar ate a posicao do vetor onde a palavra foi encontrada, entao voce teria toda a string menos a palavra.

    depois disso de um strcat que vai conectar a str2 na str1, pronto, ai voce tera o resultado que voce quer.. mas ai tem um problema. isso so vai funcionar para as ultimas posicoes.. se for no meio ou no comeco ferrou, voce perde a string toda... bom isso ai jah foi um comecinho ... nao consiguo pensar exatamente... isso ai eh um luz.. bem fraca no fim do tunel <IMG SRC="images/forum/icons/icon_razz.gif"> espero que de para clareaar algumas ideias

  7. #7

    Padrão str_replace pra C

    Po, foi um verdaderio holofote no fim do tunel, vco ver se consigo fazer essa noite quando voltar da escola...valeu mesmo, se funcionar eu coloco a função aqui... <IMG SRC="images/forum/icons/icon_biggrin.gif"> <IMG SRC="images/forum/icons/icon_biggrin.gif"> <IMG SRC="images/forum/icons/icon_biggrin.gif">

  8. #8

    Padrão str_replace pra C

    Estou de volta pra falar que 90% da missao ja foi concluida, essa funcao abaixo ja funciona, porem só pra strings pequenas, quando as strings ficam grandes ele repete uma parte do meio dela no fim da mesma, se alguem puder me ajudar a arrumar esse problema

    char *str_replace(char *isso, char *porisso, char *nisso){
    int pos,sai,a,b,c,d,e;
    char *antes,*depois,*ok;


    for(a=0;a<strlen(nisso);a++){
    c=a;
    for(b=0;b<strlen(isso);b++){
    if(isso[b]!=nisso[c]){
    sai=1;
    break;
    }
    c++;
    sai=0;
    }
    if(sai!=1){
    ok=malloc(strlen(porisso)+(strlen(nisso)-strlen(isso)));
    antes=malloc(b+1);
    for(d=0;d<(c-strlen(isso));d++){
    antes[d]=nisso[d];
    }
    sprintf(ok,"%s%s",antes,porisso);
    depois=malloc(strlen(nisso)-c);
    for(d=c,e=0;d<strlen(nisso);d++,e++){
    depois[e]=nisso[d];
    }
    sprintf(ok,"%s%s",ok,depois);
    ok=str_replace(isso,porisso,ok);
    return(ok);
    }
    }
    return(nisso);
    }


    // Valeus

  9. #9

    Padrão str_replace pra C

    Finalmente consegui acabar, ele ja substitui todas as strrings "isso" por "porisso" na variavel "nisso" confira


    char *str_replace(char *isso, char *porisso, char *nisso){
    int pos,sai,a,b,c,d,e;
    char *antes,*depois,*ok;

    for(a=0;a<strlen(nisso);a++){
    c=a;
    for(b=0;b<strlen(isso);b++){
    if(isso[b]!=nisso[c]){
    sai=1;
    break;
    }
    c++;
    sai=0;
    }
    if(sai!=1){
    ok=malloc(strlen(porisso)+(strlen(nisso)-strlen(isso)));
    antes=malloc(b);
    for(d=0;d<(c-strlen(isso));d++){
    antes[d]=nisso[d];
    }
    sprintf(ok,"%s%s",antes,porisso);
    depois=malloc(strlen(nisso)-c);
    for(d=c,e=0;d<strlen(nisso);d++,e++){
    depois[e]=nisso[d];
    }
    depois[e]=&acute;

    [ Esta mensagem foi editada por: SDM em 12-09-2003 11:48 ]

  10. #10

    Padrão str_replace pra C

    puta ele apagou o que tava depois do "\0", se alguem quizer ver o arquivo clique aqui>>>

    www.sabedeus.hpg.com.br/str_replace.c


    SabeDeus Matrix


    [ Esta mensagem foi editada por: SDM em 12-09-2003 14:34 ]

  11. #11

    Padrão str_replace pra C

    Otimo que ficou funcionando <IMG SRC="images/forum/icons/icon_smile.gif">