einfache *.txt-Auswertung mit c++



  • Hallo ihr c++´er,

    ich habe iwie das gefühl,dass mein rechner mir mal wieder deutlichst zeigt,dass ich ein totaler depp bin:D!

    ich hab mir nur ein ganz einfachen code geschrieben, aber trotzdem sagt er beim starten ohne debugging mir:
    "Datei konnte Nicht geoeffnet werden.
    Drücken sie eine beliebige Taste..."

    Jenes hab ich jedoch nie eingegeben oder ist das eine funktion fopen/fclose?!

    Hier noch der einfache code dazu:

    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      FILE *fp;
      char zeile[80];
    
      if ((fp = fopen("c:\\test.txt", "rt")) == 0)
          return 0;
      while(fgets(zeile, sizeof(zeile), fp))
          printf("%i\n", atoi(zeile));
      fclose(fp);
      getch();
      return 0;
    }
    

    Ziel ist irgendwann einmal zahlenwerte einzulesen aus größeren datein (später mal *.dat) ...zum beispiel einer wetterstation welche aller einer gewissen zeit die werte automatisch speichert (zeit und temperatur) und diese über eine html seite freundlich anzeigen zulassen!

    Bin über jeden konstruktiven vorschlag sehr erfreut!

    danke im vorraus
    milzer9



  • In deinem C-Programm fehlt das void in den Parameter-Klammern von main.
    ->

    int main(void)
    


  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hey SeppJ, diesmal haste falsch verschoben. Der TE geht offenbar (Threadtitel, Begrüßung) ernsthaft davon aus, ein C++-Programm geschrieben zu haben.



  • danke für die rasche antwort!

    wenn ich jetzt aber debug über normal f5,dann schließt sich die console sofort wieder...ich möchte aber nicht über case-anwendung arbeiten...wie kann ich die console offen halten?!...sleep() soll wohl nicht so das richtige sein?!...geht umd das normale debuggen...in 0,5sek kann ich ja leider nicht erkennen was er aus der textdatei gelesen hat:D!

    danke nochmal:)



  • Das ist ein Problem mit der Entwicklungsumgebung. Wenn das fopen fehlschlägt sollte es jedenfalls keine Meldung der Art "Datei nicht gefunden" geben. Da wurde irgendwas anderes nicht gefunden.



  • An deinem Programm ist so ziemlich nichts C++. Für Dateizugriffe in C++ benutzt man üblicherweise streams , vielleicht möchtest du dich da mal einlesen (Stichworte: istream, ostream, ifstream, ofstream ).



  • Ich vermute, dass du Windows 7 hast und das System dich nicht ohne entsprechende Befugnisse in c:\ herumschreiben lässt. Versuch's mal mit C:\Users\DeinBenutzerName\test.txt.



  • okay das mit den streams werd ich mir mal genauer anschauen!--> danke dafür

    wenn ich jedoch von dem code ausgehe und auch das verzeichnis aus dem c:\ vertiefe wie vorgeschlagen bricht sofort alles ab!

    hat denn jemand ein funktionierenden code für die datenauslesung aus *txt oder *.dat unter windows7?!

    danke:)



  • #include <iostream>
    #include <fstream>
    
    int main()
    {
        std::ifstream is("file.txt");
    
        if(!is)
            return 42;
    
        for(int i; is >> i; std::cout << i << '\n');
    
        std::cin.get();
    }
    

    Dein Programm mal in C++ übersetzt. Alternativ gehts natürlich auch mit istream_iterator.



  • ich versteh es nicht...selbst mit deinem code kommen selbige meldungen!

    habt ihr generell eine bessere idee...will die datei später mal zeilenweise auslesen und in einer art tabelle bzw. array speichern!

    tut mir leid das ihr euch mit solch dummen jungs wie mir rumschlagen müsst:$!

    mfg milzer9

    p.s.:

    datei sieht so aus...wobei spalte eins datum,spalte zwei uhrzeit und spalte 3 den messwert reflektiert)

    1205 1110 0,694



  • Was soll den das atoi da?
    Folgendes sollte funktionieren und bei einem Fehler auch die entsprechende Meldung ausgeben.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
      char *datei = "c:\\kompletterpfad\\test.txt";
      FILE *fp;
      char zeile[80];
    
      if ((fp = fopen(datei, "r")) == 0)
          return perror(datei),1;
      while(fgets(zeile, sizeof(zeile), fp))
          printf("%s", zeile);
      fclose(fp);
    
      return 0;
    }
    


  • ich zweifel jetzt schon an mir!

    hab deinen code eingegeben und dann debugged und gestartet...passierte natürlich wieder nix,bzw. konnte nix gefunden werden...!

    verstehs langsam echt nicht mehr:(!



  • Deine Zweifel an dir sind berechtigt.
    Du kannst keine extra für dich formulierte Fehlermeldungen lesen und interpretieren. Die Fehlermeldung gibt dir den Dateinamen an, der so nicht auf deinem System vorkommt. Evtl. hast du Leerzeichen oder sonstige Sonderzeichen in deinem Pfad.
    Lege dir einen kurzen Pfad neu an, z.B. C:\\Temp und lege die Datei dort hinein. Und lese und verstehe die Fehlermeldung die da kommt, wenn eine kommt.



  • da kommt eben nix! hab das jetzt schon auf c:\\sub\\text.txt minimiert...

    jetzt zeigts schonmal meinen pfad an...fehlte noch eine lib (#include "StdAfx.h")...jedoch sagt er mir da: no such file or directory

    noch eine idee?!

    danke wutze für deine geduld:)



  • Bashar schrieb:

    Das ist ein Problem mit der Entwicklungsumgebung.

    Erzähl mal welchen Compiler/IDE du nimmst und wie du es gemacht hast, dass du deinen Code eingeben kontest.



  • auf die gefahr hin,dass ich wieder nicht das richtige schreib (bitte um nachsicht als laie)...ich arbeite mit microsoft visual studio 10 und benutz den hiesigen compiler...ich hab ein neues projekt eingefügt und folgenden code eingegeben:

    #include <stdio.h>
    #include <stdlib.h>
    #include "StdAfx.h"
    
    int main()
    {
    	char *datei = "C:\\Users\\Chris\\AppData\\Local\\Temp\\test.txt";
      FILE *fp;
      char zeile[80];
    
      if ((fp = fopen(datei, "r")) == 0)
          return perror(datei),1;
      while(fgets(zeile, sizeof(zeile), fp))
          printf("\n%s", zeile);
      fclose(fp);
    
      return 0;
    }
    

    danke schon einmal für eure/deine hilfe!
    milzer9



  • vielleicht bringt das noch was:

    "wetter.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
    "wetter.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
    "wetter.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB fil



  • Was für ein Projekt?



  • visual c++ win32-consolenanwendung!



  • Da du offenbar MSVC benutzt, führe mal Strg+F5 aus und schaue dir an, was ausgeschrieben wird.


Anmelden zum Antworten