Příkazy system – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Příkazy system – C / C++ – Fórum – Programujte.comPříkazy system – C / C++ – Fórum – Programujte.com

 

bubliňák
~ Anonymní uživatel
3 příspěvky
24. 6. 2012   #1
-
0
-

dobrý den,

potřeboval bych aby při příkazu system("ping "web) to odeslalo ping na webovou stránku, která se nachází v proměnné web. chtěl bych se zeptat jestli by to šlo? Asi hodinu sem googlil a nevygooglil

Děkuji předem i zadem

Nahlásit jako SPAM
IP: 89.235.32.–
crazy
~ Moderátor
+10
Grafoman
24. 6. 2012   #2
-
0
-

#1 bubliňák
funkce sprintf pokud děláš v C...

pokud v C++ tak se koukni na stringstreamy

Nahlásit jako SPAM
IP: 2001:718:2:31:4ce8:55d5:3...–
All you need is vision and time.
Martin Kozibrátka0
Stálý člen
24. 6. 2012   #3
-
+1
-
Zajímavé

string a="seznam.cz";
string b("ping ");
b+=a;
system(b.c_str());

Nahlásit jako SPAM
IP: 88.83.169.–
Savana.cz - neomezený webhosting za pár kaček :)
bubliňák
~ Anonymní uživatel
3 příspěvky
24. 6. 2012   #4
-
0
-

Velice děkuji. Jen bych se chtěl zeptat, paroč mi to hází při běhu aplikace chybu

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

string a;
scanf("%c", &a); 
string b("ping ");
b += a;
system(b.c_str());
system("pause");
    return EXIT_SUCCESS;
}

dělam v c++ a vždy to řekne neodpovídá a začne to online vyhledávat řešení

Nahlásit jako SPAM
IP: 89.235.32.–
yaqwsx+9
Posthunter
24. 6. 2012   #5
-
0
-

#4 bubliňák
Protože mícháš C a C++. Musíš buď:

char a[256];
scanf("%c", &a); 

nebo

string a;
cin >> a; 
Nahlásit jako SPAM
IP: 85.160.36.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
bubliňák
~ Anonymní uživatel
3 příspěvky
24. 6. 2012   #6
-
0
-

ježiši nojo!!! já sem blb.

děkuji moc

Nahlásit jako SPAM
IP: 89.235.32.–
jano
~ Anonymní uživatel
85 příspěvků
24. 6. 2012   #7
-
0
-

#5 yaqwsx
mylis sa, je to kvoli tomu ze

scanf("%c", &a);

ma byt

scanf("%c", &a); 
scanf("%c", a);

miesanie C a C++ je bezna prax :)

Nahlásit jako SPAM
IP: 85.135.187.–
ondra.holub+1
Stálý člen
24. 6. 2012   #8
-
0
-

#7 jano
Ano, vytvoření instance třídy string a následné načítání do jejího vnitřního bufferu, je (bohužel) běžná praxe. Nebo jinými slovy - chybné míchání C a C++ je skutečně běžnou praxí.

Je hodně optimistické předpokládat, že adresa instance třídy string bude totožná s adresou interního bufferu. A stejně tak je hodně optimistické předpokládat, že když nějaké třídě změním natvrdo zvenku interní data, tak to bude pořád korektně fungovat. To si můžu dovolit na nějaké třídě, kterou jsem sám implementoval a vím, jak bude fungovat na každém (i v budoucnu) použitém překladači - ovšem v takovém případě nevím, proč bych pro podobné taškařice nemohl dodat nějakou metodu té třídy.

Nahlásit jako SPAM
IP: 212.96.189.–
yaqwsx+9
Posthunter
25. 6. 2012   #9
-
0
-

#7 jano
#8 ondra.holub
Trochu mi to objasněte - žiji v domění, že string (zjednodušeně), má dynamické pole (třídu typu allocator) a atribut určující aktuální délku pole. Tzn. za předpokladu, že by allocator měl již nějakou paměť naalokovanou, tak i když do té paměti zapíšu, tak string se bude stále jevit jako prázdný, protože jeho atribut pro určení velikosti je stále nulový.

Nestudoval jsem zdrojové kódy stringu, ale existenci atributu velikosti vyvozui z faktu, že do stringu můžu vložit libovolné množství znaků '\0' a následně s nimi pracovat jako s běžným znakem.

Tak jak je to?

Nahlásit jako SPAM
IP: 85.160.35.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
ondra.holub+1
Stálý člen
25. 6. 2012   #10
-
0
-

#9 yaqwsx
Chtěl jsem ten svůj příspěvek napsat tak, že je nesmysl používat scanf na adresu std::stringu. Asi jsem se moc zamotal do ironie a nebylo to z toho mého příspěvku moc jasné.

Je to přesně tak, jak píše yaqwsx. Pokud udělám něco takového:

std::string a;
scanf("%c", &a);

Tak musím počítat s tím, že string má v sobě délku a nějaký buffer. Může tam toho být více, může to být v libovolném pořadí a něco může být ukryto třeba za nějakým dalším ukazatelem. Ten scanf je něco podobného jako

std::string a;
((char*)(&a))[0] = 'x';

Takže potom záleží na tom, co mám na začátku toho stringu (a to si přepíšu). Může se tedy změnit i ta délka, ale bude to pořád nesmysl.

Nahlásit jako SPAM
IP: 194.138.12.–
Darker
~ Anonymní uživatel
9 příspěvků
28. 6. 2012   #11
-
0
-

#1 bubliňák

("ping " + host).c_str()
Nahlásit jako SPAM
IP: 90.179.142.–
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, 59 hostů

Podobná vlákna

Příkazy aj. — založil Petr G...

Príkazy — založil hirakami

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ý