Fehler beim datei einlesen



  • eigentlich ein ganz leichter code

    #include <fstream.h>
    #include <iostream.h>
    #include <string>

    int main ()
    {
    fstream dh ("Hallo.txt");
    char zeichen[2000];

    while (dh.good())
    {
    dh.getline(zeichen,2000);
    cout << zeichen;
    }
    dh.close();
    return 0;
    }

    aber es kommt immer diese fehler meldung
    error C2664: '__thiscall fstream::fstream(int)' : Konvertierung des Parameters 1 von 'char [10]' in 'int' nicht moeglich



  • Ich sehe keinen Fehler. Aber mach bitte das ".h" beim inkludieren der Header weg ( + ggf. namespace std öffnen).


  • Mod

    füg mal noch

    using namespace std;
    

    ein, vielleicht hilfts.



  • ne bringen beides nichts wenn ich .h weg mache kommen noch mehr fehler und das andere geht auch nicht.

    weiß einer wie ich die datei auch ohne fstream einlesen kann kein plan warum das nicht geht



  • Probier mal ifstream oder zur Not (!) fopen



  • Hallo,
    der fstream-Ctor der nicht Standard-Streams (<fstream.h>) der als ersten Parameter einen const char* entgegennimmt, erwartet als zweiten Parameter einen open-Mode. Der Ein-Parameter-Ctor hingegen erwartet als Parameter einen file-Deskriptor.
    Sprich:

    fstream dh ("Hallo.txt", ios::in);
    

    Oder aber du verwendest die Standard-Streams:

    #include <fstream>  // kein h
    #include <iostream> // kein h
    using namespace std;
    int main()
    {
        fstream dh ("Hallo.txt"); // -> der zweite Parameter hat den Def-Wert ios_base::in | ios_base::out
    }
    
    while (dh.good()) 
    { 
    dh.getline(zeichen,2000); 
    cout << zeichen; 
    }
    

    Das ist nicht gut.
    Das ist besser:

    while (dh.getline(zeichen,2000)) 
    { 
        cout << zeichen; 
    }
    


  • #include <fstream.h>

    void main() //the program starts here

    {

    ifstream OpenFile("data.txt");

    char ch;

    while(!OpenFile.eof())

    {

    OpenFile.get(ch);

    cout << ch;

    }

    OpenFile.close();

    }



  • cool danke jungs jetzt geht es aber ab und zu kommt bei mir der fehler wenn ich das einbauen will
    error C2872: 'fstream' : Mehrdeutiges Symbol
    oder auch bei cout woran liegt das ich glaube das ist eine sehr dumme frage aber trotzdem



  • Hamster schrieb:

    cool danke jungs jetzt geht es aber ab und zu kommt bei mir der fehler wenn ich das einbauen will
    error C2872: 'fstream' : Mehrdeutiges Symbol
    oder auch bei cout woran liegt das ich glaube das ist eine sehr dumme frage aber trotzdem

    Das liegt daran, dass du alte und neue Streams mischst. D.h. du hast irgendwo ein #include <iostream> und an einer anderen Stelle ein #include <iostream.h>
    (oder <fstream.h>...)



  • aa ok fehler auch beseitigt supi 🙂

    so und nun der letzte für heute abend

    wenn ich die datei einlesen habe kann ich das ganze einfach so mit

    char *s3
    s3 = char zeichen[2000];
    // send s

    send(sock,s3,2000,0);

    verschicken das mit den sockets und so ist alles ok.....



  • na ja

    char *s3
    s3 = char zeichen[2000];

    wird nicht funktionieren
    entweder

    char zeichen[2000];
      s3 = zeichen;
    

    oder

    s3 = new char [2000];
    

    aber dann delete s3[]; nicht vergessen
    K.



  • juchu danke euch allen ihr seid meine helden 🙂
    so habe nun das gesamte progi überarbeitet alles läuft wie es laufen soll aber leider kommt nicht das raus was raus kommen soll ich wehre euch sehr verbunden wenn es mir einer sagen könnte

    http://paste.phpfi.com/32044 ( Client )
    http://paste.phpfi.com/32043 ( Server )

    👍



  • scheint das der fehler bei der send datei ist es kommt einfach nichts an aber es wird kein fehler angegeben

    cin.get();
    // IPconfig wird in einer datei erstallt der name der datei ist in s2
    {

    string s2;
    s2 = "Hallo";
    string s = "ipconfig > C:\";
    s+=s2+".txt";
    system(s.c_str());
    }

    // Die datei wird gelesen
    {

    fstream dh ("Hallo.txt", ios::in);
    while (dh.good())
    {
    char zeichen = dh.get();
    cout << zeichen;
    }
    dh.close();
    }

    // Der INhalt der datei wird in s3 gespeichert und versendet

    char *s3;
    s3 = zeichen;

    // send s

    send(sock,s3,strlen(s3),0);
    printf ("Wurde gesendet: %s3",&s3[0]);

    Empfang

    strncpy (s3,"Rock da house ^^", sizeof (s3)); // strncpy ist besser als strcpy da es die länge prüft und buffer overflows vermeiden kann!

    if (recv (sockfd2,s3,10000, 0) == -1) {
    perror("recvfrom");

    printf("Received: %s3",s3);


Anmelden zum Antworten