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 BezeichnerWie 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 sicherstd::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 sicherstd::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.