Изтегляне на страница c++ linux

a4kata

Member
Имам следния код

Код:
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

int main()
{

string address;
cin >> address;
system("wget --convert-links 'address' ");
return 0;

}

Компилирам си го, и след като run-а ./download тогава се стартира cin-а и пиша адреса.
Само че аз искам да го направя директно:
като напиша
./download http://abv.bg
директно да ми сваля индекса и да знае, че в случая http://abv.bg е променливата address.
Някакви идеи?
 
За чий х*й ти е С. Елементарен bash ще ти свърши работа.

Иначе това би трябвало да свърши работа, но ме мързи да го тествам,
Код:
int main( int argc, char * argv [] ) {
    if( argc > 1 ) {
        system( sprintf( "wget --convert-links '%s'", argv[1]) );
        return 0;
    } else {
        printf( "Missing parameter\n" );
        return 1;
    }
}
 
Последно редактирано:
И аз си мисля това, ама трябва да си взема дипломата някак ... а тея c-та никога не са ме влекали ...

Код:
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

int main( int argc, char *argv[] ) {
    if( argc > 1 ) {
        printf("wget --convert-links %s\n", argv[1]);
        return 0;
    } else {
        printf( "Missing parameter\n" );
        return 1;
    }
}

С тоя код всичко е точно, но като заменя printf със system дава

Код:
download.cpp: In function ‘int main(int, char**)’:
download.cpp:9:52: error: too many arguments to function ‘int system(const char*)’
         system("wget --convert-links %s\n", argv[1]);
                                                    ^
In file included from /usr/local/include/c++/4.9.4/cstdlib:72:0,
                 from download.cpp:2:
/usr/include/stdlib.h:717:12: note: declared here
 extern int system (__const char *__command) __wur;
            ^

А нали идеята е да изпълнява командата и да сваля файла .
 
С тоя код всичко е точно, но като заменя printf със system дава
Сдъвкано :D
Код:
int main( int argc, char * argv [] ) {
string cmd;

    if( argc > 1 ) {
        cmd = sprintf( "wget --convert-links '%s'", argv[1]);
        printf(cmd);
        system( cmd );
        return 0;
    } else {
        printf( "Missing parameter\n" );
        return 1;
    }
}
 
Така няма да стане, направих си труда да по прочета повече system-а може да има само 1 аргумент, затова преобразувах аргумента на стринг и тогава вече станаха работите. Мерси иначе за помощта!
 
Да, трябва да викаш мейн с правилните аргументи. Иначе - това не е най-добрата идея за сваляне на линкове. Защо просто не си викаш командата през шел-а.
 
Така няма да стане, направих си труда да по прочета повече system-а може да има само 1 аргумент, затова преобразувах аргумента на стринг и тогава вече станаха работите. Мерси иначе за помощта!

И защо да не стане?
Специално ти го пуснах сдъвкано, ако oneliner-а те обърква.
Код:
system( sprintf( "wget --convert-links '%s'", argv[1]) );
Двата варианта са идентични. Просто втория е за хора, които не са свикнали да четат код.
Код:
cmd = sprintf( "wget --convert-links '%s'", argv[1]);
system( cmd );
 
Както и да е поиграх си да попрочета и го направих по друг начин, не ми се занимава да тествам с друг код, че имам други неща на главата ...
А освен тази задача имам да правя друга по-сложна и обемна и икономически погледнато ще ми е по добре да дам някой долар от колкото да си троша времето, така и така не планирам да ставам c++ програмист, така че ако има някой мераклия да пише на Л.С. ще пусна тема и в раздел freelance.
 
Както и да е поиграх си да попрочета и го направих по друг начин, не ми се занимава да тествам с друг код, че имам други неща на главата ...
А освен тази задача имам да правя друга по-сложна и обемна и икономически погледнато ще ми е по добре да дам някой долар от колкото да си троша времето, така и така не планирам да ставам c++ програмист, така че ако има някой мераклия да пише на Л.С. ще пусна тема и в раздел freelance.
Здравейте, изпратил съм ЛС.
 

Горе