Externí vyhledávání v c++

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Externí vyhledávání v c++

Příspěvek od Coburn »

Zdarec
Chtěl bych vytvořit prográmek, který by pomocí fstream do sebe natáhl čtyři textové soubory, ve kterých by následně vyhledával slova, které by uživatel napsal. Potřeboval bych jen, aby zjistil, jestli se dané slovo nachází v určitém souboru, nebo ne.
S fstream, porovnávání textu apod. problém nemám. Nevím ale jak udělat vyhledávání. Kdybyste někdo věděl, prosím napište.

Děkuju
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Re: Externí vyhledávání v c++

Příspěvek od €agle »

Kdyz
Coburn píše:S fstream, porovnávání textu apod. problém nemám.
tak nejjednoduseji vzdycky nacti radek (nebo rovnou cely soubor) do bufferu a pak if(strstr(Buffer, "Hledany vyraz")) Nalezeno = true;
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

ano, diky, ale buffer jsem jeste nikdy nepouzival. Jak se to do něj načítá? Ja umim jenom externí soubor načíst, aby vypsal text.
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

jeste bych se rad jinak zeptal, jestli existuje nejaky prikaz, ktery neporovnava jako !strcmp cely text, ale jenom jeho cast.

napr. kdyz napisu "program", tak aby to naslo take "programy", "programu", "programum"...
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

A pak jeste jestli byste mi neporadil, proc se mi nechce zkompilovat tohle:

char Text[20];
cin >> Text;
if(!strcmp(Text[1], "0")) {Text[1] = "a";}
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
mhl
Středně pokročilý
Středně pokročilý
Registrován: 17. úno 2004
Bydliště: Brno

Příspěvek od mhl »

- před cin ti chyběl prostor jmen, nicnéně v tom problém asi není(pokud používáš direktivu using)
- strcmp očekává první proměnnou typu 'const char *', Text[1] je typu char
- když napíšeš "a" bude to přeloženo jako 'a', '\0' - tj dva znaky ... to do Text[1] samozřejmě uložit nejde

zde je funkční verze...

Kód: Vybrat vše

#include <iostream>

int main()
{
   char Text[20];
   std::cin >> Text;
   if(!strcmp(Text+1, "0"))
   {
      Text[1] = 'a';
   }
}
... nicméně to pořád není ono, když zadáš víc než 19 znaků nastane buffer overflow, chce to více využít předností c++ :)
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Diky moc.
c++ forever
Naposledy upravil(a) Coburn dne ned 15. dub 2007, 16:43, celkem upraveno 1 x.
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Mel bych jeste jednu vec.

Kdyz mam pole Text, ktere porovnavam se zbytkem textu a tim padem vyhledavam a chci, aby se po vyhledani a zapsani do souboru automaticky zmenilo, vzdycky mi to vyhodi chybu. Nemam includovat neco navic?

v nasledujicim kodu je odkaz na funkci fulltext();, ktera je funkcni, v tom problem neni. Nemuzu ji sem dat, je strasne dlouha.

Kód: Vybrat vše

char Text[20]; 
fulltext(); 
Text = "obsah1"; 
fulltext(); 
Text = "obsah2"; 
fulltext();
atd atd...
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

Coburn píše:jeste bych se rad jinak zeptal, jestli existuje nejaky prikaz, ktery neporovnava jako !strcmp cely text, ale jenom jeho cast.

napr. kdyz napisu "program", tak aby to naslo take "programy", "programu", "programum"...
Vyse uvedeny strstr hleda prvni vyskyt daneho vyrazu v retezci, takze pokud zadas "abc", je tomu jedno, jestli je retezec "abcd" "abcdef" nebo "abcretezec", proste ti vrati pointer na prvni vyskyt stringu "abc" a je mu jedno, jak pokracuje...
Coburn píše:A pak jeste jestli byste mi neporadil, proc se mi nechce zkompilovat tohle:

char Text[20];
cin >> Text;
if(!strcmp(Text[1], "0")) {Text[1] = "a";}
Uz vysvetloval mhl. Jenom bych dodal, ze pokud chces porovnavat ciste jenom jeden znak, tak je lepsi if(text[1] == '0').
Coburn píše:Kdyz mam pole Text, ktere porovnavam se zbytkem textu a tim padem vyhledavam a chci, aby se po vyhledani a zapsani do souboru automaticky zmenilo, vzdycky mi to vyhodi chybu. Nemam includovat neco navic?
Text = "Obsah" nelze pro nacitani retezcu pouzit, musis pouzit funkci strcpy, v tvem pripade tedy strcpy(Text, "Obsah")
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Brtl!
Nováček
Nováček
Registrován: 16. bře 2007
Bydliště: Ostrava
Kontaktovat uživatele:

Příspěvek od Brtl! »

kdyby si chtel proniknout vice do sveta C++ tak si kup prirucku mas tam vsechno co potrebujes... :wink: :wink:
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Vite o nějaký dobrý? Díky za rady.
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
Coburn
Začátečník
Začátečník
Registrován: 12. čer 2006
Bydliště: Kobenhavn, Denmark
Kontaktovat uživatele:

Příspěvek od Coburn »

Mam problem
ruzne jsem si naklonoval ruzny casti kodu, ze jenom vyslednej textovej soubor měl 80 mb. soubor cpp ma 83MB. Zkousel jsem to zkompilovat, ale dev-c++ mi vyhodi chybu, ze mam malo pameti a visual c++ vyhodi chybu c1010.

dalo to hodně práce, please help
CPU: Intel Core2 Duo E6300 2,33Ghz, GPU: Leadtek Winfast PX7600GS, MB: MSI P965 NEO-F, PSU-ASUS XXX 450W, HDD: Seagate Barracuda 7200.10, 320GB
€agle
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 13. lis 2003
Bydliště: Vlastní 3D svět :)
Kontaktovat uživatele:

Příspěvek od €agle »

83MB zdrojak? To programujes novy windowsy? :o Pri tvem klonovani nejspis nekde nastala chyba a zda se, ze jsi asi naklonoval zhoubny nador, protoze 83MB textu je fakt moc...
Eagle3D Engine under developement

Hledáme do firmy schopného ASP/VB.NET/C# programátora, více po SZ
Odpovědět

Zpět na „Programování a web“