Funktion strcpy() funktioniert nicht



  • Hallo liebe Gemeinde.

    Seit gestern beschäftige ich mich mit dem Thema Array.

    In dem Buch, das ich verwende, ist folgendes Beispiel:

    #include <iostream>
    #include <string>
    
    int main()
    {
      char String1[] = "Keiner lebt fuer sich allein!" ;
      char String2[80];
    
      strcpy[String2,String1];
    
      cout << "String1: " << String1 << endl;
      cout << "String2: " << String2 << endl;
    
      return 0;
    }
    

    Wenn ich auf "Starten ohne Debugging" klicke, kommen folgende 5 Fehlermeldungen:

    error2107: Ungültiger Index, Dereferenzierung nicht zulässig
    error2056: 'cout': nicht deklarierter Bezeichner
    error2056: 'endl': nicht deklarierter Bezeichner
    error2056: 'cout': nicht deklarierter Bezeichner
    error2056: 'endl': nicht deklarierter Bezeichner
    

    Wie kommen diese Fehlermeldungen zustande? Warum muss ich die Bibliothek String mit einbeziehen??

    Danke im Voraus für die Antworten.

    Gruß

    Max



  • Funktionsaufrufe schreibt man mit () und nicht mit [].
    Was willst du mit strcpy? Benutze std::string!
    Und schmeiss dein Buch weg, wenn es dir strcpy vor std:.string beibringt!



  • Ausserdem:
    cout => std::cout
    endl => std::endl



  • Darf ich raten? Informatik erstes Semester ? 😉

    Zu deinem Problem :

    Cout und endl gehören zu dem namespace std, also muss vor cout und endl immer std:: stehen.

    Beispeil

    #include <iostream>
    
    int main () {
    
    std::cout << "Mein test!" << std::endl;
    return 0;
    }
    

    oder du benutzt unsing namespace

    #include <iostream>
    using namespace std;
    int main () {
    
    cout << "Mein test!" << endl;
    return 0;
    }
    


  • manni66 schrieb:

    Funktionsaufrufe schreibt man mit () und nicht mit [].
    Was willst du mit strcpy? Benutze std::string!
    Und schmeiss dein Buch weg, wenn es dir strcpy vor std:.string beibringt!

    Wie meinst Du das??

    Außerdem sind immer noch bei der ersten Ausgabe das cout und das endl rot unterringelt...



  • #include <iostream>
    #include <cstring> // du brauchst cstring, dort hast du strcpy
    
    int main()
    {
      char String1[] = "Keiner lebt fuer sich allein!" ;
      char String2[80];
    
      strcpy(String2,String1);
    
      std::cout << "String1: " << String1 << std::endl;
      std::cout << "String2: " << String2 << std::endl;
    
      return 0;
    }
    
    #include <iostream>
    #include <string> // das sind die string von c++
    
    int main()
    {
      std::string String1 ("Keiner lebt fuer sich allein!");
      std::string String2; // die hier
    
      String2 = String;
    
      std::cout << "String1: " << String1 << std::endl;
      std::cout << "String2: " << String2 << std::endl;
    
      return 0;
    }
    


  • silent_max schrieb:

    manni66 schrieb:

    Funktionsaufrufe schreibt man mit () und nicht mit [].
    Was willst du mit strcpy? Benutze std::string!
    Und schmeiss dein Buch weg, wenn es dir strcpy vor std:.string beibringt!

    Wie meinst Du das??

    So wie es da steht!



  • Entschuldigt Leute ... Ich habe total übersehen, dass ich "using namespace std;" nicht geschrieben habe.

    Nein, kein Informatik Student im ersten Semester, sondern staatlich geprüfter E-Techniker im zweiten Jahr.



  • akoww schrieb:

    strcpy(String2,String1);
    

    Du wolltest sicher

    std::strcpy( String2, String1 );
    


  • Swordfish schrieb:

    [...]
    Du wolltest sicher

    std::strcpy( String2, String1 );
    

    Nein wollte ich nicht, war schon richtig so. Schau mal in die cstring bzw string.h 😉



  • Ich glaube nicht dass der Beispiel von der Buch, '[]' fur das strcp gehabt hat...

    Bist du bestimmt?



  • akoww schrieb:

    Swordfish schrieb:

    [...]
    Du wolltest sicher

    std::strcpy( String2, String1 );
    

    Nein wollte ich nicht, war schon richtig so. Schau mal in die cstring bzw string.h 😉

    string.h ist C und gehört hier nicht hin
    string ist C++ und dort ist es auch im Namespace std



  • Wirklich? string ist an C auch gewesen? Wunerbard. Ich habe das nicht geweissen. 😮

    Aber, halten sie! Du sagst 'cstring'.

    Cstring ist char name[n] - printf("%s");

    Keinen string. Nein?



  • esgol schrieb:

    Wirklich? string ist an C auch gewesen? Wunerbard. Ich habe das nicht geweissen. 😮

    Aber, halten sie! Du sagst 'cstring'.

    Cstring ist char name[n] - printf("%s");

    Keinen string. Nein?

    Die Klasse std::string gibt es in C natürlich nicht, denn es gibt auch keine Klassen.

    Die Datei string.h (in C++ heißt sie cstring) enthält nur Funktionen, um die Arbeit mit char * einfacher zu machen.

    Man nennt diese "Strings" auch C-Strings. Die aber nicht zu verwechseln mit CString sind. Das ist eine Windows-Klasse aus der MFC.


Anmelden zum Antworten