= = = 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
Fórum › C / C++
čtení dat z txt souboru rada sscanf
![](img/forum_vlakno_help_vyreseno.png)
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.
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 ===
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.
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Čtení řádků v ".txt" souboru — založil Jirka
Otevření txt souboru pro čtení, kdyz už je otevřen jinou aplikací — založil Propas
Cteni dat ze souboru — založil honza
Čtení pole dat ze souboru(obrázku). — založil MiCizek
Čtení z binárního souboru a následný výpis dat — založil avalagne
Moderátoři diskuze