Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Url aufsplitten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.04.2004, 18:47 Uhr
Holger1976



Ich möchte aus einer Url z.b. www.shareware.de/download/beispiel.zip
die betreffende Datei, in dem Fall beispiel.zip extrahieren.
Das ganze soll natürlich mit einer beliebigen Url funktionieren.
Ich stell es mir so vor, das man bis zum letzten / in der Url positioniert und dann den Rest ausliest.
Kann mir jemand sagen, wie das am besten geht. Eventuell mir kurzem Code Beispiel?
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2004, 18:58 Uhr
Pablo
Supertux
(Operator)


Das riecht nach HA (tut mir leid, wenn ich mich irre)

Lies mal das:

Zitat:
man 3 strrchr


NAME
strchr, strrchr - locate character in string

SYNOPSIS
#include <string.h>

char *strchr(const char *s, int c);

char *strrchr(const char *s, int c); --> Diese Funktion solltest du benutzen!

DESCRIPTION
The strchr() function returns a pointer to the first occurrence of the character c in the string s.

The strrchr() function returns a pointer to the last occurrence of the character c in the string s.

Here "character" means "byte" - these functions do not work with wide or multi-byte characters.

RETURN VALUE
The strchr() and strrchr() functions return a pointer to the matched character or NULL if the charac-
ter is not found.

CONFORMING TO
SVID 3, POSIX, BSD 4.3, ISO 9899

SEE ALSO
index(3), memchr(3), rindex(3), strpbrk(3), strsep(3), strspn(3), strstr(3), strtok(3), wcschr(3),
wcsrchr(3)


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 11.04.2004 um 19:01 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.04.2004, 19:05 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Probier mal strtok

C++:
#include <stdio.h>
#include <string.h>

int main()
{
   char string[] = "www.shareware.de/download/beispiel.zip";
   char *ptr;
   char file[128]={""};

   ptr = strtok(string,"/");
   while(ptr != NULL){
      strncpy(file,ptr,128);
      ptr = strtok(NULL, "/");
   }
   file[128] = '\0';

   printf("%s\n",file);

  return 0;
}


mfg

edit: Pablo gleich um 7min schneller *g* Das dauerd bei mir immer
--

Dieser Post wurde am 11.04.2004 um 19:07 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.04.2004, 19:06 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


z.B. so

C++:
#include <stdio.h>
#include <string.h>

int main()
{
    char    szUrl[] = "www.test.org/u/rsdg/test.txt",  *lpDatei;
    int i=strlen(szUrl);
    for (int j=i; j>=0; --j)
        if (szUrl[j]=='/')
            break;
    lpDatei = new char[i-j];
    strcpy(lpDatei,szUrl+j+1);
    printf ("%s\n",lpDatei);
    delete[] lpDatei;
    return 0;
}



EDIT:
Ich war sogar noch langsamer
Das Problem bei strtok ist das es den zu durchsuchenden String manipuliert, da sollte man also vorsichtig sein.


Bearbeitung von Pablo:

Es gab Probleme mit der char szUrl Zeile


Dieser Post wurde am 11.04.2004 um 19:36 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.04.2004, 19:32 Uhr
Pablo
Supertux
(Operator)


Ok, jetzt mein Code.

C++:
#include <stdio.h>
#include <string.h>

int main()
{
    char* file;
    char url[]="www.shareware.de/download/beispiel.zip";
    if (NULL==(file = strrchr(url, '/'))) {
        fprintf(stderr, "Die Adresse ist ungültig\n");
        return 1;
    }
    printf("Die Datei ist: %s\n", ++file);
    return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 11.04.2004 um 19:37 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.04.2004, 18:37 Uhr
Holger1976



Danke für die vielen Tipps.
Die eleganteste Lösung scheint mir dir Verwendung von strrchr zu sein.
Leider findet die Funktion irgendwie das / Zeichen nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.04.2004, 18:39 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Dann ist entweder keins drin im String oder du hast einen Fehler im Code
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.04.2004, 18:52 Uhr
Pablo
Supertux
(Operator)


Wieso denn das? Bekommst du Fehler? Poste deinen code
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.04.2004, 19:05 Uhr
Holger1976



Sorry, hab den Fehler mittlerweile selbst gefunden.
Das Problem war,das ich vorher mit strtok den String in Host und Pfad für meinen Http Request aufgesplittet habe und danach für die arme strrchr Funktion nichts mehr da war!
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
12.04.2004, 19:45 Uhr
Holger1976



Aber das führt mich gleich zum nächsten Problem
Ich hab jetzt einen kleinen Client, der mir eine Datei aus dem Internet lädt und auch unter dem enstprechendem Namen auf der Fesplatte speichert.
Gibt es eine Möglichkeit die Grösse der Datei zu ermitteln, bevor ich diese runterlade?
Ciao,
Holger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: