Pokaż wyniki 1 do 3 z 3

Temat: urlencode w C++

  1. #1
    Zarejestrowany
    May 2007
    Skąd
    przed komputerem
    Postów
    63

    Domyślnie urlencode w C++

    Chcialbym aby program przekawyal dane do stronki GETem...
    Ale w danych sa rowniez znaki specjalne wiec musze zakodowac to na wzor PHPowego urlencode, ale nie wiem jak...

    Wpadlem na kilka pomyslow np.

    biore ciag wejsciowy char* oraz ciag wyjsciowy char* i przypisuje pokolei :

    Kod:
    strcpy(out,"%");
    strcpy(out,static_cast<int>(in));
    Ale kompilator burzy mi sie ze proboje robic rzutowanie z int do char...

    Potem mialem pomysl aby zamiast wyjsciowego typu char* dac string.
    No i wszystko ladnie szlo (po kilku godzinkach ) ale powstal problem...

    Gdy funkcja ma zwrocic wartosc string program sie sypie ;/

    Ktos wie jak to zrobic albo chociaz powie czemu program sie sypie gdy funkcja ma zrwrocic string?

    I standartowo: Jesli nie pasuje (ale chyba proste to newbie) przeniesc, Jesli zle wytlumaczone pisac
    Ostatnio edytowane przez andrew8666 : 03-29-2008 - 17:04 Powód: tytul
    Właściwością człowieka jest błądzić, głupiego - w błędzie trwać.

  2. #2

    Domyślnie

    Wiem, że się pewnie spóźniłem, ale może komuś się przyda. Kod nie jest "najwyższych lotów", ale może ktoś będzie zadowolony:

    Kod:
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    char* urlencode(char* str)
    {
    
    	int i;
    	char* out = (char*)malloc(sizeof(char)*strlen(str)*3);
    	
    	for(i=0; i < strlen(str); i++)
    		sprintf(out, "%s%%%hhx", out, (int)str[i]);
    
    	return out;
    
    }
    
    int main()
    {
    
    	char* res;
    
    	res = urlencode("^^");
    	printf("%s", res);
    
    	return 1;
    
    }

  3. #3
    Zarejestrowany
    Dec 2007
    Postów
    271

    Domyślnie

    Kod:
    #include <stdio.h>
    main(){
    unsigned char in[] = "asółł56$%&$^%*&(() 76 567 67   \t\t\t\r\n\r\n\n\n34234923423\b\b\b543453\b1!!@#$^& ||\\", out[sizeof(in) * 3 - 2];
    int i, ii;
    for(i = 0, ii = sizeof(in)-1, out[0] = 0; i != ii; i++)sprintf(&out[i * 3], "%%%.2X ", in[i]);
    puts(out);
    }

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj