ifstream: Kein Datenträger

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ifstream: Kein Datenträger

    Nabend,
    momentan will ich zur Übung ein programm schreiben, das mir meine Daten auf einem USB-Stick sichert. Auf dem USB-Stick muss ein Verzeichnis "backup" sein, dass eine config.txt enthält. Wenn diese config-Datei gefunden wurde, wird das Back-Up erstellt. Nun prüfe ich über meine Funktion testPort(); nacheinander, ob die jewweiligen Ports belegt sind und anschließen in der FUnktion getPort, welcher dieser POrts nun der richtige ist, indem sich auch die Config-Datei befindet. Als Fehlermeldung bekomm ich aber folgende:
    [Blockierte Grafik: http://img4.imageshack.us/img4/5848/unbenannttlc.png]
    Trotzdem bekomme ich in der Konsole den richtigen Pfad ausgegeben. Am USB-Stick kanns nicht liegen, das ich es schon mit mehreren ausprobiert habe.

    Codes:

    main.cpp

    Quellcode

    1. #include "functions.cpp"
    2. using namespace std;
    3. int main(int argc, char* argv[])
    4. {
    5. getPort();
    6. return 0;
    7. }


    functions.cpp

    Quellcode

    1. #include <iostream>
    2. #include <cstdio>
    3. #include <string>
    4. #include <fstream>
    5. #include <vector>
    6. #include "functions.h"
    7. using namespace std;
    8. bool testPort(string port_name)
    9. {
    10. string path(port_name+":\\12612d2fdf786bda6235dcf7bb000155f8a20b9a.txt");
    11. ofstream test_file(path.c_str());
    12. if(!test_file)
    13. {
    14. return false;
    15. }
    16. remove(path.c_str());
    17. return true;
    18. }
    19. string getPort()
    20. {
    21. string alphabet[14];
    22. alphabet[1] = "E";
    23. alphabet[2] = "F";
    24. alphabet[3] = "G";
    25. alphabet[4] = "H";
    26. alphabet[5] = "I";
    27. alphabet[6] = "J";
    28. alphabet[7] = "K";
    29. alphabet[8] = "L";
    30. alphabet[9] = "M";
    31. alphabet[11] = "N";
    32. alphabet[12] = "O";
    33. alphabet[13] = "P";
    34. ifstream config_file;
    35. for(int i = 0; i < 14; i++)
    36. {
    37. if(testPort(alphabet[i]))
    38. {
    39. config_file.open((alphabet[i]+":\\backup\\config.txt").c_str());
    40. if(config_file.is_open())
    41. {
    42. cout << alphabet[i] << ":\\backup\\config.txt";
    43. return alphabet[i];
    44. }
    45. }
    46. }
    47. return "none";
    48. }
    Alles anzeigen


    functions.h

    Quellcode

    1. #ifndef FUNCTIONS_H_INCLUDED
    2. #define FUNCTIONS_H_INCLUDED
    3. inline std::string getPort();
    4. inline bool testPort(std::string port_name);
    5. #endif // FUNCTIONS_H_INCLUDED



    Motzt mich ruhig an, wenn ich da irgend n Müll fabriziert habe :D
    Ich möchte allerdings die WInAPI nicht benutzen, sondern Plattformübergreifend bleiben ;)

    Danke



    Edit: Wenn ich mit der Funktion testPort() einen Port öffne, der nicht existiert, bekomme ich keine Fehlermeldung.
  • Müsste an dieser Stelle liegen:

    Quellcode

    1. config_file.open((alphabet[i]+":\\backup\\config.txt").c_str());

    Mach daraus besser:

    Quellcode

    1. string path = alphabet[i]+":\\backup\\config.txt";
    2. config_file.open(path.c_str());


    Da sonst die Temporär erzeugte Variable ungülltig ist und damit auch c_str nicht klar definiert ist.


    Diese Stelel sieht auch etwas komisch aus:

    Quellcode

    1. if(!test_file)

    Das wird wohl nicht das gewünschte Ergebniss liefern.
    Besser: open - is_open - close

    Mfg Rushh0ur