1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Manipolação de strings

Discussão em 'Programação' iniciada por agentesimoes, 18 de Abril de 2007. (Respostas: 3; Visualizações: 665)

  1. O objectivo é "pegar num endereço como http://www.sapo.pt ou mais elaborado http://www.tvcabo.pt/internet/internet.aspx e conseguir separar o protocolo, identificar a maquina, o caminho e o recurso, para poder validar.

    O protocolo já consegui validar, mas para mim é a parte mais fácil, não consigo é depois eliminar o protocolo (http://) e trabalhar depois no resto do endereço.
    Agradecia se alguém me pudesse ajudar.

    O que tenho até agora é isto:

    tou a programar em c


    #include<stdio.h>
    #include<string.h>

    void main()
    {
    char end[50], pro[50];
    char *temp;
    printf("introduza o endereco\n");
    gets(end);
    temp=strstr(end,":");
    strncpy(pro,end,temp-end);
    pro[temp-end]='\0';
    puts(pro);
    if(strcmp(pro,"http")==0 || strcmp(pro,"ftp")==0 || strcmp(pro,"rtsp")==0 || strcmp(pro,"https")==0 )
    printf("protocolo valido\n");
    else
    printf("o protocolo nao e valido\n");



    }
     
    Última edição: 18 de Abril de 2007
  2. HecKel

    HecKel The WORM

    Boas!

    Se bem percebi queres verificar o protocolo (antes dos :) e depois sacares o resto do endereço (após os ://), certo?

    Tens o length do protocolo, basta copiares todo o conteúdo da string original a partir do length do protocolo + 3.

    Experimenta usando uma combinação do strlen com o strncpy ;) Não tenho aqui nenhum compilador de C para experimentar, senão até tentava encontrar uma solução.

    abraços, HecKel
     
  3. manta

    manta Power Member

    sabes o tamanho da string so protocolo, somas + 3 para :// ficas com lenghtpro
    end=end+lenghtpro

    Se imprimires a string veras que só te aparece tudo o que esta a frente de ://

    Cuidado pois se a string inserida so for http:// o program pode originar um core dump.
     
  4. Exactamente, resulta somando 3.
    Obrigado pela dica.

    #include<stdio.h>
    #include<string.h>

    void main()
    {
    char link[50], pro[50], maq[100];
    char *temp;
    printf("Introduza o endereco:\n\n");
    gets(link);
    //protocolo
    temp=strstr(link,":");
    strncpy(pro,link,temp-link);
    pro[temp-link]='\0';



    //validacao do protocolo
    if (strcmp(pro,"http")==0 || strcmp(pro,"https")==0 || strcmp(pro,"rtsp")==0 || strcmp(pro,"ftp")==0)
    printf("Protocolo valido: %s\n",pro);
    else
    printf("Protocolo invalido!\n");


    //maquina
    strcpy(link,temp+3);
    temp=strstr(link,"/");
    strncpy(maq,link,temp-link);
    maq[temp-link]='\0';
    printf("a maquina e: %s\n", maq);
    strcpy(link,temp+1);
    }

    :banjump:
     

Partilhar esta Página