Pitäisi tehdä ohjelma, joka etsii
tekstitiedostosta URLit ja tulostaa ne toiseen
tiedostoon rivinumeroineen. Lähinnä mulla on nyt
hukassa tuo URLien etsiminen tai oikeestaan koko
juttu :) .. ja pitäsi olla tiukkaa ANSI C:tä.
kiitos etukäteen :)
tekstitiedostosta URLit ja tulostaa ne toiseen
tiedostoon rivinumeroineen. Lähinnä mulla on nyt
hukassa tuo URLien etsiminen tai oikeestaan koko
juttu :) .. ja pitäsi olla tiukkaa ANSI C:tä.
kiitos etukäteen :)
Vastaukset 3
Vanhimmat
Miten tekstitiedostostasi tunnistetaan URLit?
Onko tiedoston teksti vaapaamuotoista ja onko
URLit sellaisenaan tekstin joukossa
vaiko "merkitty" jollain tavoin?
URLien luotettava tunnistaminen tekstistä voi
olla hyvinkin hankalaa, koska ja jos niiden muoto
voi vaihdella. Jos URLeissasi on protokollaosuus
mukana (esim. "http"), voit yksinkertaisesti
hakea riveiltä "://"-erotinta esim. strstr()-
funktiolla. Tämä ei ehkä yksinään riitä
ja "löydetyn" URLin muotoa voi joutua
varmistelemaan muillakin tavoin.
Jos protokolla ei ole mukana ja tekstisi on
vaapaamuotoista, aiheesta voisi vaikka kirjoittaa
kirjan tai kaksi..
Teksti on vapaamuotoista, mutta helpottavana
tekijänä on se, että pitää löytää vain http:llä
alkavat urlit. en saanut strstr-funktiolla
ohjelmaa toimimaan, voisitko antaa vinkkejä
funktion toteutuksesta? kiitos!
Tytti
Mitäs ihmeellistä tuossa?!
Vaikkapa tähän tapaan:
#include <string.h>
#include <malloc.h>
:
:
char *http, *rivi =
malloc(MAX_RIVI_PLUS1 * sizeof(char));
:
:
if (fgets(rivi, MAX_RIVI_PLUS1, textiFile)
!= NULL)
{
/*Tektirivi luettu OK*/
http = strstr(rivi, "http://");
if (http != NULL)
{
/*URL löytyi.. Mahdollisesti*/
:
/*Etsitään URLn loppu..*/
:
Koodissasi on ehkä varauduttava URLn jatkumiseen
seuraavalle riville (joudut yhdistämään kaksi tai
useamman rivin) ja että rivillä saattaa olla
useampi kuin yksi URL. Auttoiko?