abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 06:00 | Nová verze

Po necelém roce od vydání verze 0.67 byla vydána verze 0.68 populárního telnet a ssh klienta PuTTY. Podrobnosti v přehledu změn. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
včera 21:32 | Nasazení Linuxu

Canonical představuje nejnovější verzi chytré helmy DAQRI s Ubuntu pro rozšířenou realitu. K vidění bude příští týden v Barceloně na veletrhu Mobile World Congress 2017.

Ladislav Hagara | Komentářů: 0
včera 21:31 | Pozvánky

Pro zájemce o hlubší znalosti fungování operačních systémů připravila MFF UK nový předmět Pokročilé operační systémy, v rámci něhož se vystřídají přednášející nejen z řad pracovníků fakulty, ale dorazí také odborníci ze společností AVAST, Oracle, Red Hat a SUSE. Tento předmět volně navazuje na kurz Operační systémy ze zimního semestru, ale pokud máte praktické zkušenosti odjinud (například z přispívání do jádra Linuxu) a chcete si

… více »
Martin Děcký | Komentářů: 0
včera 21:30 | Pozvánky

Czech JBoss User Group Vás srdečně zve na setkání JBUG v Brně, které se koná ve středu 1. března 2017 v prostorách Fakulty Informatiky Masarykovy Univerzity v místnosti A318 od 18:00. Přednáší Tomáš Remeš a Matěj Novotný na téma CDI 2.0 - New and Noteworthy. Více informací na Facebooku a na Twitteru #jbugcz.

mjedlick | Komentářů: 0
20.2. 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 10
20.2. 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
20.2. 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 32
20.2. 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 23
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 34
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (71%)
 (3%)
 (10%)
Celkem 680 hlasů
 Komentářů: 61, poslední včera 13:06
Rozcestník

Dotaz: c++ - CLI parameter z argv a strcat

28.10.2010 16:20 PeterS. | skóre: 10
c++ - CLI parameter z argv a strcat
Přečteno: 375×

Ahoj

potrebujem dostať parameter programu, odovzdať ho funkcii a spojiť ho s iným stringom. Je to vlastne názov pôvodného súboru ku ktorému sa ma pripojiť koncovka a pod týmto menom sa ma uložiť nový obrázok.

Mám toto:

int main(int argc, char** argv)
{
int poc_obr=argc-1;
char* filename;
for (n=0;n<poc_obr;n++) {

//opening image
filename = argv[n+1];
CImg<unsigned char> srcimg(filename) ;   // toto funguje


savemask (,,,*filename);            // tu ten názov predávam
}
}


void savemask (,,,char filename) {

char finalname[20];                          // finalny nazov obrazka
strcat(finalname,  const char* filename);    // =riadok 124
strcat(finalname, "_mask.jpg");


mask_img.save(finalname);
}

kompilacia:
cphix-0h.cpp: In function ‘void savemask(mydata&, int*, int, char)’:
cphix-0h.cpp:124: error: expected primary-expression before ‘const’

 

Hľadal som už aj na nete, skušal som už veľa možností, ale zjavne mi chýba hlbšie pochopenie...

Vďaka za pomoc...

 

Odpovědi

28.10.2010 17:39 mato
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat
Příloha:
hm, dost nebezpecne slepo kopirovat user data bez osetrenia (filename[20] ako buffer).
prilozil som subor ako by som to robil ja (opat moznosti je viac):

mato@foxi:(~/lair/filename)$ ./atest picture picture02
DEBUG: working on picture
DEBUG: new file: picture_mask.jpg

DEBUG: working on picture02
DEBUG: new file: picture02_mask.jpg

mato@foxi:(~/lair/filename)$

osobne by som ti ale odporucil prejst nejaku C/C++ ucebnicu; aspon zbezne
28.10.2010 23:52 PeterS. | skóre: 10
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat
Ahoj, študujem tvoj súbor a mám otázku. Nie je jednoduchšie previesť argv[a] na string a tak s nim dalej narábať? Viď:

string filename,newfilename;

while ( a < argc) {

filename =argv[a]; newfilename=filename+"_mask.jpg"; ...... }

Nemam tu teraz ten môj rozpracovaný program, ale urobil som si skúšobný program a funguje to. Aj ked dosť dlho som sa s tým cez den mordoval a nezdá sa mi že som prehliadol takéto triviálne riešenie... Overim to zajtra...
29.10.2010 01:03 mato
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat
pravda je, ze ja som ti ukazal C-ckovsky pristup k problemu, C++ ma na to svoje nastroje, ktorymi by sa to dalo spravit - pozri google, najde ti ukazky manipulacie so stringom (string/std::string , etc.)

string ako taky v C nie je definovany a teda neexistuje operator + v takom vyzname, ako si ho pouzil ty

nevidim ti do kodu a problemu co riesis, na tvoju otazku som ti teda odpovedal v C

ale nemyslim si, ze by to bolo nejak zlozite .. i ten operator + v C++ je zadef. tak, ze musi vytvorit space pre novovzniknuty string - niekde sa ta sprava pamati musi udiat .. v C++ ju vsak v tomto pripade nevidis

29.10.2010 07:32 PeterS. | skóre: 10
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat

problem je že funkcia ktorú potrebujem:

CImg<unsigned char> srcimg(filename) ;

neberie filename ak je definované ako string, stažuje sa:

/usr/include/CImg.h:6992: note: candidates are: cimg_library::CImg<T>::CImg(const T*, unsigned int, unsigned int, unsigned int, unsigned int, bool) [with T = unsigned char]

preto som filename mal definované ako :

char* filename;

ale potom mám problem to prenášať medzi funkciami. Mne by vyhovovalo narábať s filename ako so stringom, kvôli upravam, ale potom to potrebujem predať CImg<unsigned char>  ako char....

29.10.2010 07:55 PeterS. | skóre: 10
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat
Myslim že som to vyriešil:
char *char_filename=new char[filename.size()+1]  ;
char_filename[filename.size()]=0; 		
memcpy(char_filename,filename.c_str(),filename.size()); 
Tak ako som to popísal výššie, pre CImg to budem konvertovať na char a inak to bude string.

Teda tu konverziu som samozrejme našiel na nete. V každom prípade vďaka za pomoc...
29.10.2010 11:04 ludo
Rozbalit Rozbalit vše Re: c++ - CLI parameter z argv a strcat
konvertovat medzi stringom a char* nemusis... string je jenom obal nad char* polom, ktory sa stara o alokaciu a pridava bezne operatory a funkcie... k polu ktore potrebujes mozes pristupovat cez .c_str() ako to tam aj mas, ale kopirovat ho nemusis...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.