Периписать пхп скрипт на C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Suliman36, 12 Dec 2009.

  1. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Всем привет, мне нужно переписать пхп скрипт буквально в 15 строк на C++, чтобы его можно было скомпилить на фряхе и ано работало такжекак на пхп,тоесть результат выполнения был такойже
    вот код
    Code:
    <?php
    set_time_limit(0);
    ignore_user_abort(1);
    $array = file('uin.txt');
    $count = count($array);
    $array2 = file('pass.txt');
    $count2 = count($array2);
    $fp = fopen('source.txt', 'w');
    flock ($fp, LOCK_EX);
    for ($n2 = 0; $n2 < $count2; $n2++) {
        for ($n = 0; $n < $count; $n++) {
            fputs($fp, intval($array[$n]).';'.$array2[$n2]);
        }
    }
    flock ($fp, LOCK_UN);
    fclose($fp);
    ?>
    
    так как я знаю тока пхп,сам немогу переписать
    надеюсь тут найдутся добрые люди знающие оба языка и помогут мне...
     
  2. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Ты уверен что код написан правильно?
    Если в uin.txt будет
    и в pass.txt будет
    После выполнения скрипта в "source.txt" будет
     
  3. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Да именнотак мне и надо,потомучто такой подход на мой взгляд лучше так как будет один пароль пробоваться ко всем номерам,потом другой ко всем и так далее, хотя можно написать 2 версии
     
  4. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Вот, как на php
    Code:
    #include <iostream>
    #include <string>
    #include <fstream>
    
    int main (int argc, char* argv[]) {
        std::string source, line, uin, pass;
        std::ifstream uinFile("uin.txt");
        std::ifstream passFile("pass.txt");
        std::ofstream sourceFile("source.txt");
        if (!uinFile.is_open()) {
            std::cout << "Unable to open file uin.txt\n";
            return 1;
        }
        if (!passFile.is_open()) {
            std::cout << "Unable to open file pass.txt\n";
            return 1;
        }
        if (!sourceFile.is_open()) {
            std::cout << "Unable to open file source.txt\n";
            return 1;
        }
        while (!passFile.eof()) {
            line = "";
            getline(passFile, pass);
            while (!uinFile.eof()) {
                getline(uinFile, uin);
                line += uin + ";" + pass + "\n";
            }
            source += line;
            uinFile.seekg(std::ios::beg);
        }
        sourceFile << source;
        uinFile.close();
        passFile.close();
        sourceFile.close();
        return 0;
    }
    
     
  5. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Чета ано нихочет компилицо
    скопировал все как ты написал, но компилятор выдает ошибки
    почиму так?
    Ошибки выдает чтота связанное с синтаксисом...
    Может это написанно под винду, а ме нужно под FreeBSD...
    Может быть есть какие различия в том как нужно писать?
     
    #5 Suliman36, 12 Dec 2009
    Last edited: 12 Dec 2009
  6. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Может имеет смысл показать что конкретно пишет компилятор? тут не экстрасенсы...
     
  7. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    # gcc -pthread list.c -o list
    list.c:1:22: iostream.h: No such file or directory
    list.c:3:21: fstream.h: No such file or directory
    list.c: In function `main':
    list.c:6: error: syntax error before ':' token
    list.c:7: error: syntax error before ':' token
    list.c:8: error: syntax error before ':' token
    list.c:9: error: syntax error before ':' token
    list.c:10: error: `uinFile' undeclared (first use in this function)
    list.c:10: error: (Each undeclared identifier is reported only once
    list.c:10: error: for each function it appears in.)
    list.c:11: error: syntax error before ':' token
    list.c:14: error: `passFile' undeclared (first use in this function)
    list.c:15: error: syntax error before ':' token
    list.c:18: error: `sourceFile' undeclared (first use in this function)
    list.c:19: error: syntax error before ':' token
    list.c:23: error: `line' undeclared (first use in this function)
    list.c:24: error: `pass' undeclared (first use in this function)
    list.c:26: error: `uin' undeclared (first use in this function)
    list.c:29: error: `source' undeclared (first use in this function)
    list.c:30: error: `std' undeclared (first use in this function)
    list.c:30: error: syntax error before ':' token
     
  8. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    У меня на win mingw все компилит на ура...
    Меня смущает вот что
    Попробуй скомпилить мой код не изменяя его.
    з.ы. мб версия компилятора старая?
     
  9. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    # cat list.c

    Code:
    #include <iostream>
    #include <string>
    #include <fstream>
    
    int main (int argc, char* argv[]) {
        std::string source, line, uin, pass;
        std::ifstream uinFile("uin.txt");
        std::ifstream passFile("pass.txt");
        std::ofstream sourceFile("source.txt");
        if (!uinFile.is_open()) {
            std::cout << "Unable to open file uin.txt\n";
            return 1;
        }
        if (!passFile.is_open()) {
            std::cout << "Unable to open file pass.txt\n";
            return 1;
        }
        if (!sourceFile.is_open()) {
            std::cout << "Unable to open file source.txt\n";
            return 1;
        }
        while (!passFile.eof()) {
            line = "";
            getline(passFile, pass);
            while (!uinFile.eof()) {
                getline(uinFile, uin);
                line += uin + ";" + pass + "\n";
            }
            source += line;
            uinFile.seekg(std::ios::beg);
        }
        sourceFile << source;
        uinFile.close();
        passFile.close();
        sourceFile.close();
        return 0;
    }
    
    # gcc -pthread list.c -o list
    Какая версия компилятора я даже и незнаю...
     
    #9 Suliman36, 13 Dec 2009
    Last edited by a moderator: 14 Dec 2009
  10. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Понятно, ты компилируешь исходник С++ в С - компиляторе.
    Попробуй вместо gcc написать g++
     
  11. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Ыы все скомпилилось
    я в этих делах нишарю, но читал что gcc вроде как C/C++ компилятор
    большое спасибо за помошь!
     
  12. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Чета оно работает не так как запланированно

    Там какбы накладывается данные друг на друга и получается совсем не то что надо, и только последняя строка записывается как надо

    ошибка скорей всего в этом участке кода:

    Комментарии это как я понимаю код

    while (!passFile.eof()) { // цыкл до момента пока не достигнут конец файла
    line = ""; // объявляен/обнуляем переменную
    getline(passFile, pass); // выбираем знчение строки и присваиваем переменной
    while (!uinFile.eof()) { // цыкл до момента пока не достигнут конец файла
    getline(uinFile, uin); // выбираем знчение строки и присваиваем переменной
    line += uin + ";" + pass + "\n"; дописываем значение переменной
    }
    source += line; дописываем значение
    uinFile.seekg(std::ios::beg); сдвиг указателя
    }

    если я хоть нимного понял этот код, то пойдее нужно так?
    Code:
    #include <iostream>
    #include <string>
    #include <fstream>
    
    int main (int argc, char* argv[]) {
        std::string source, uin, pass;
        std::ifstream uinFile("uin.txt");
        std::ifstream passFile("pass.txt");
        std::ofstream sourceFile("source.txt");
        if (!uinFile.is_open()) {
            std::cout << "Unable to open file uin.txt\n";
            return 1;
        }
        if (!passFile.is_open()) {
            std::cout << "Unable to open file pass.txt\n";
            return 1;
        }
        if (!sourceFile.is_open()) {
            std::cout << "Unable to open file source.txt\n";
            return 1;
        }
        while (!passFile.eof()) {
            getline(passFile, pass);
            while (!uinFile.eof()) {
                getline(uinFile, uin);
                source += uin + ";" + pass + "\n";
                uinFile.seekg(std::ios::beg);
            }
            passFile.seekg(std::ios::beg);
        }
        sourceFile << source;
        uinFile.close();
        passFile.close();
        sourceFile.close();
        return 0;
    }
    
     
    #12 Suliman36, 13 Dec 2009
    Last edited: 13 Dec 2009
  13. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Актуально!
    Подскажите правильный ли тот код, который в последнем сообщении, я просто низнаком с этим языком и подправил методом догадки и похожести функций с пхп...
    Компилить и проверять без одобрения нинхота, боюсь за последствия если чета нитак...
     
  14. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Скомпилил, вот результат:
    [uin.txt]
    Code:
    user1
    user2
    user3
    [pass.txt]
    Code:
    pass1
    pass2
    pass3
    pass4
    pass5
    [source.txt]
    Code:
    user1;pass1
    user2;pass1
    user3;pass1
    user1;pass2
    user2;pass2
    user3;pass2
    user1;pass3
    user2;pass3
    user3;pass3
    user1;pass4
    user2;pass4
    user3;pass4
    user1;pass5
    user2;pass5
    user3;pass5
    
    Если не так, то как?
     
  15. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    У меня тот код что дал ты не так робит,вопервых он берет тока первъй пароль,номера берет все но он накладывает на номер пароль,и только последняя строка записывается как нужно,почему я низнаю,а тот код что
    я дал вобще ничего не записывает в фаил
     
  16. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Приведи пример нескольких строк из твоего uin.txt и pass.txt
     
  17. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Файл uin.txt
    Code:
    100184
    100680
    100682
    100692
    101158
    
    файл pass.txt
    Code:
    oksnyudn
    djosmnuf
    26348256
    3hd8j39f
    d9j37fnh
    
    в результате выполнения файл source.txt
    Code:
    ;oksnyudn
    ;oksnyudn
    ;oksnyudn
    ;oksnyudn
    101158;oksnyudn
    
     
  18. rudvil

    rudvil Elder - Старейшина

    Joined:
    25 Aug 2008
    Messages:
    200
    Likes Received:
    29
    Reputations:
    0
    Исправил
    Code:
    #include <iostream>
    #include <sstream>
    #include <string>
    #include <fstream>
    
    int main (int argc, char* argv[]) {
        std::string source, line, uin, pass;
        std::ifstream uinFile("uin.txt");
        std::ifstream passFile("pass.txt");
        std::ofstream sourceFile("source.txt");
        if (!uinFile.is_open()) {
            std::cout << "Unable to open file uin.txt\n";
            return 1;
        }
        if (!passFile.is_open()) {
            std::cout << "Unable to open file pass.txt\n";
            return 1;
        }
        if (!sourceFile.is_open()) {
            std::cout << "Unable to open file source.txt\n";
            return 1;
        }
        while (!passFile.eof()) {
            line = "";
            getline(passFile, pass);
            if (pass == "")
                continue;
            while (!uinFile.eof()) {
                getline(uinFile, uin);
                if (uin == "")
                    continue;
                line += uin + ";" + pass + "\n";
            }
            source += line;
            uinFile.seekg(std::ios::beg);
        }
        sourceFile << source;
        uinFile.close();
        passFile.close();
        sourceFile.close();
        return 0;
    }
    
     
  19. Suliman36

    Suliman36 New Member

    Joined:
    12 Dec 2009
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Ничего не изменилось...
    Ладн спасибо за помошь, наверно придется пользовоться проверенным пхп