čtení dat z txt souboru rada sscanf – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

čtení dat z txt souboru rada sscanf – C / C++ – Fórum – Programujte.comčtení dat z txt souboru rada sscanf – C / C++ – Fórum – Programujte.com

 

lorDoom0
Duch
30. 12. 2010   #1
-
0
-

= = = vyřešeno = = =

zdravím,
potřeboval bych radu, jak nastavit parametry ve funkci sscanf, načítám html soubor, ze kterého chci získat odkazy (tedy to co je v parametru href="..." ).

Celý soubor načítám přes while cykl po řádcích pomocí funkce fgets(), potom pomocí strstr ()lokalizuju <a href=" v načteném textu, ale nevím, jak sepsat sscanf(), aby mi načetl do proměné ten link v hrefu.

ten link přes sscanf() potřebuju mít bez počáteční a koncové uvozovky ;)

Díky za rady :)


P.S: jedná se o jazyk C

Nahlásit jako SPAM
IP: 89.103.143.–
Bald3rr0
Super člen
30. 12. 2010   #2
-
0
-

To lorDoom : Pokud můžeš předpokládat, že na vstup dostaneš takový soubor, že <a href... /> bude vždy na začátku nějaké řádky, pak otestuješ první tři znaky každého řádku a pokud budou ['<', 'a', ' '], tak rozsekat href="link"> pomocí strtok není těžké. Pokud se <a href... /> může vyskytovat kdekoli v textu, asi bych použil fci strtok, která ti text rozseká po slovech a pokud nějaké slovo bude "<a" tak následující slovo je "href=link"> a to rozsekneš opět pomocí strtok.

Nahlásit jako SPAM
IP: 82.100.0.–
Grungy0
Super člen
30. 12. 2010   #3
-
0
-

skús niečo takéto

sscanf(string, "<a href=\"%s"\">%*s",link);

neskúšal som to ale v link budeš určite niečo mať

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
bedna
~ Anonymní uživatel
22 příspěvků
30. 12. 2010   #4
-
0
-

A když najdeš strstr, tak dostaneš index v tom řetězci, kde se to nachází, co tak pak jít v cyklu k prvnímu " a pak zaznamenávat všechno do dalšího "? :-)

Nahlásit jako SPAM
IP: 213.191.125.–
lorDoom0
Duch
4. 1. 2011   #5
-
0
-

díky za rady, ten strtok mi pomohl :)

Ale když jsem scanoval teď už normální html soubor, tak jsem narazil na problém, že mi funkce fgets() načte první řádek správně, ale ostatní mi vynechává první slovo (což je občas ten hledaný začátek <a hrefu). Rozsah mám nastavený na 256 znaků, což by mělo stačit, i když jsem nastavil 1024, tak to nepomohlo a to některé řádky jsem měl třeba o 2 slovech :)

Nedělá mi to jenom ten program, co připravuju, ale i když jsem jenom napsal jednoduchý zdroják pro zobrazení obsahu souboru, tak mi to udělalo to samé



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

FILE *vstup;

int main(void){

char soubor[256]; // jméno souboru
char text[256]; // řádek v souboru
printf("\nZadej vstupni datovy soubor : ");
gets(soubor);
vstup = fopen(soubor,"r"); //otevreni souboru pro cteni
if( vstup == NULL){
printf("\n Error: %s nelze otevrit, overte, zda vami zadany soubor skutecne existuje...\n",soubor);
return 0; // ukončení programu v případě vadného souboru
}

while(1){

fgets(text, 256, vstup); // načtení řádku
printf("%s\n", text); // print řádku
//zakončení cyklu, narazí-li na konec souboru
if(fscanf(vstup,"%s",&text)== EOF){
printf("\nScan souboru dokoncen");
break;
}
}



fclose(vstup);



return 0;
}



nějaké rady pls :) přecejenom jsem lamka :)



=== vyřešeno ===

Nahlásit jako SPAM
IP: 89.103.185.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
4. 1. 2011   #6
-
0
-

while(fgets(text, 256, vstup)) {

printf("%s\n", text);
}


místo toho while(1) a tetsování co dál... ten scanf ti to totiž načte po první mezeru a fgets pokračuje od toho místa.

Nahlásit jako SPAM
IP: 88.102.223.–
m->29+6
Super člen
4. 1. 2011   #7
-
0
-

To slovo ti mizne, lebo ho načítaš

if(fscanf(vstup,"%s",&text)== EOF)
EOF sa dá detekovať pomocou funkcie feof(vstup) Ale to myslím ani nie je potrebné, pretože stačí niečo takéto:
while(fgets(text, 256, vstup) != NULL) {

...
}

Nahlásit jako SPAM
IP: 83.240.51.–
lorDoom0
Duch
4. 1. 2011   #8
-
0
-

jej fakt jsem lama :D díky už to jede :)

Nahlásit jako SPAM
IP: 89.103.185.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 77 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý