Macro schreibt nicht in Datei



  • Hallo,

    ich möchte mal einen neuen Befehl ausprobieren. Das Macro funktioniert bis auf den Datei-Schreibe begeht..

    Woran liegt der Fehler? Ich wäre für den entscheidenden direkt benannten Hinweis sehr danke.

    using namespace std;
    #include <string>
    #include <vector>
    #include <cstdio>
    #include <math.h>
    #include <stdbool.h>
    #include <cstdlib>
    #include <functional>
    #include <algorithm>
    #include <deque>
    #include <iostream>
    #include <fstream>
    
    int nr=0;
    int x=0;
    int zeler;
    int qz1=1;
    int qz2=1;
    
    string result;
    
    int izz=1;// Intervallzähler
    int pzz=0;// Primzahlzähler
    int dreizel=0;
    
    bool prim();// Bool Primzahlprüfung
    bool prim(int n){
        int x;
        if(n<2) return false;
        if(n==2) return false;
        if(n%2==0) return false;
        for(x=3;x<=sqrt(n);x+=2){
            if(n%x==0)
    
                return false;
        }
        return true;
    }
    
    int main(int argc, const char * argv[]){
    
        ofstream result;
        result.open("C:/Users/Desktop/result.txt", ios_base::out);
    
        for (zeler=1; zeler<=200; zeler++)// Qzahlhersteller
        {
            qz1=zeler*zeler;
            qz2=(zeler+1)*(zeler+1);
           std::cout<<izz<<"    "<<qz1<<"   "<<qz2<<"   "; // Informator bitte entkommentieren
            //std::cout<<izz<<". iq. Intervall "<<qz1<<" & "<<qz2<<" ";
            izz++;
            for(x=qz1; x<qz2; x++){
                if(x%10==3)
                {
                    if(prim(x)==true)
                    {pzz++;
                            }
                   // cout<<x<<" ";
                    dreizel++;
                    }
                }
            cout<<dreizel<<", "<<pzz<<"\n";
            result<<dreizel<<", "<<pzz<<"\n";
            dreizel=0;
            pzz=0;
            result.close();
            }
        return 0;
    }
    


  • Überprüf das Ergebnis der Dateioperation.
    Ist der Pfad wirklich der Richtige? "C:/Users/Desktop/result.txt"

    int main() {
      std::ofstream result("C:/Users/Desktop/result.txt");
      if(!result) {
        std::cerr << "Fehler beim Dateioeffnen.\n";
        return 1;
      }
      // ...
    }
    


  • Oder schreibe sie gleich ohne Pfad, dann liegt sie in dem Ordner, wo das Projekt liegt oder wo die exe gestartet wurde. Kannst ja diesen Ordner immer offen lassen, wenn Du in "Echtzeit" verfolgen willst.



  • Fehler beim Dateioeffnen schrieb:

    Überprüf das Ergebnis der Dateioperation.
    Ist der Pfad wirklich der Richtige? "C:/Users/Desktop/result.txt"

    int main() {
      std::ofstream result("C:/Users/Desktop/result.txt");
      if(!result) {
        std::cerr << "Fehler beim Dateioeffnen.\n";
        return 1;
      }
      // ...
    }
    

    Danke hab das reimkopiert, und es kommt wirklich "Fehler beim Öffnen der Datei"!

    Fehler beim Dateioeffnen.
    Program ended with exit code: 1

    Was tun..?

    hab dies Video gefunden, werd es mir morgen reinziehen, obwohl mein Eng-Lisch eher nicht gut ist ...

    https://www.youtube.com/watch?v=An9rJGR8swY



  • Um den korrekten Pfad zu finden, öffne im Explorer C: dann-> Benutzer -> deinName -> Desktop.

    Dann... in die Pfadzeile oben einmal klicken, der Pfad wird code-tauglich blau eingefärbt, kopieren.

    edit: Vielleicht siehst Du dann (auch), was bei Dir gefehlt hat.



  • Wollen wir nicht lieber das result.close() in Zeile 72, den grauenvollen Codestil und die hinterwäldlerische Grammatik diskutieren?
    Eng-Lisch?
    Ich wäre für einen entscheidenden direkt benannten Hinweis sehr danke?
    Das Makro funktioniert bis auf den Datei Schreibe begeht?
    😃
    Außerdem erzeugt ofstream eine Datei wenns noch keine gibt und der Pfad korrekt (ist ja Sinn der Sache), prüfen, ob es eine Datei gibt macht man über ifstream

    std::ifstream file("...");
    if(!file.is_open())
        //...
    

    Die Zeile mit ofstream schlägt nur Alarm, wenn der Pfad nicht stimmt, das Programm z.B. keine Rechte zur Dateierzeugung hat oder der Speicherplatz alle ist.



  • Incocnito schrieb:

    Wollen wir nicht lieber das result.close() in Zeile 72, den grauenvollen Codestil und die hinterwäldlerische Grammatik diskutieren?
    Eng-Lisch?

    "Been there, done that." & "off-topic" 🙂


  • Mod

    Ich finde es viel niedlicher, dass wir hier wieder mal einen Fall haben, bei dem 2 keine Primzahl ist. Überrascht bin ich aber nicht, denn das was Incocnito anspricht ist oft auch ein deutliches Symptom für fehlerhafte Programmlogik.



  • Incocnito schrieb:

    Wollen wir nicht lieber das result.close() in Zeile 72, den grauenvollen Codestil und die hinterwäldlerische Grammatik diskutieren?
    Eng-Lisch?
    Ich wäre für einen entscheidenden direkt benannten Hinweis sehr danke?
    Das Makro funktioniert bis auf den Datei Schreibe begeht?
    😃
    Außerdem erzeugt ofstream eine Datei wenns noch keine gibt und der Pfad korrekt (ist ja Sinn der Sache), prüfen, ob es eine Datei gibt macht man über ifstream

    std::ifstream file("...");
    if(!file.is_open())
        //...
    

    Die Zeile mit ofstream schlägt nur Alarm, wenn der Pfad nicht stimmt, das Programm z.B. keine Rechte zur Dateierzeugung hat oder der Speicherplatz alle ist.

    Danke Inkognito!

    Alle Probleme gelöst, es lag nicht an Programmierkünsten, sondern an meiner Unkenntnis von Code und Apple...


Anmelden zum Antworten