int rpm; { char rpm[36]; cin >> rpm; system("clear"); cout << "Looking for " << rpm << " please wait.." <<endl; sprintf(rpm, "wget http://urli.urli.com/ -O tiedosto"); system(rpm);
Eli tarkoitus olisi saada cin syöte "tiedosto":n paikalle, onko kenelläkään ideoita miten toteuttaa?
sprintf(rpm, "wget http://urli.urli.com/ -O %s", rpm);
Ohoh, koodic-tagit epäosaa hienosti. Laaksoneeen.. löyty korjattavaa sulle :)
Ei ole kovinkaan järkevää käyttää samaa muuttujannimeä kahdelle eri tietotyypille (rpm esitelty intiksi ja charritaulukoksi). Vaikka kuinka toinen on esitelty sulkeiden sisällä, tuolla kerjää vaan verta nenästään., Eikä se myöskään ole kovin luettavaakaan.
On muuten aika vähän jätetty tilaa tiedostonimelle. Laita vain suosiolla vähän isompi taulu.
Minä tietenkin tekisin tuon paljon rumemmin:
char buf[100] = "wget http://urli.urli.com/ -O "; char *tiedosto = &(buf[30]); cin >> tiedosto; cout << "Looking for " << tiedosto << " please wait.." << endl; system(buf);
Ei tarvitse kenenkään tulla valittamaan, että tämä on huono tapa :)
Huono tapa ;) Tässä ei ole tullut vielä yhtään toimivaa esimerkkiä. Varokaa niitä puskuriylivuotoja!
Niin no, enhän minä tietenkään cin-oliota käyttäisi.
scanf("%70s", tiedosto);
En tiedä, miten tuo rajoitus sitten cin:llä tapahtuu.
#include <iostream> #include <string> using namespace std; int main(int args, char ** argv) { string sTiedosto; char cTiedosto[100]; char wget[] = "wget http://urli.urli.com/ -O "; cin >> sTiedosto; cout << "Looking for " << sTiedosto << " please wait.." << endl; string sKomento = wget+sTiedosto; system(sKomento.c_str()); cin.width(sizeof(cTiedosto)); cin >> cTiedosto; cout << "Looking for " << cTiedosto << " please wait.." << endl; char buffer[sizeof(wget)+sizeof(cTiedosto)]; sprintf(buffer, "%s %s", wget, cTiedosto); system(buffer); return EXIT_SUCCESS; }
Tuossa eräs ratkaisu stringeillä ja ilman. Noille virroille voi antaa kaikenlaisia määritteitä, joilla säädellään mitä ne lukee tai kirjoittaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.