char und pointer verständniss problem
-
Hallo liebe Community,
vor kurzem beschäftige ich mich mit Visual Studio 2010 und C++ Sprache. Und jetzt tritt mein erstes Problem auf:
Aufgabe:
Schreiben Sie eine Funktion, die eine Zeichenkette aus einem Quellarray in ein Zielarray
kopiert.
void stringCopy(char quelle[], char ziel[])
Welches Problem kann hier auftreten? Trennen Sie Ihre Lösung auch sauber in Headerund
Implementierungsdatei und schreiben Sie einen kleinen Test, der die Funktion nutzt.Meine Lösung:
[code]#include <iostream> #include <stdio.h> #include <string> using namespace std; void stringCopy(char quelle[],char ziel[]){ for (int i=0;i<strlen(quelle[]);i++) { ziel[i]=quelle[i]; } } int main(void){ cout << stringCopy("Das ist fantastisch",""); return 0; }[/code]
Und ich bekomme folgende Fehler:
**-Fehler 1 error C2059: Syntaxfehler: ']' c:\..\my documents\visual studio 2008\projects\info2.uebungen\aufgabe_2.8\ag2.8.cpp 8
-Fehler 2 error C2143: Syntaxfehler: Es fehlt ';' vor ')' c:\..\my documents\visual studio 2008\projects\info2.uebungen\aufgabe_2.8\ag2.8.cpp 8
-Fehler 3 error C2143: Syntaxfehler: Es fehlt ';' vor ')' c:\..\my documents\visual studio 2008\projects\info2.uebungen\aufgabe_2.8\ag2.8.cpp 8
-Fehler 4 error C2143: Syntaxfehler: Es fehlt ';' vor '{' c:\..\my documents\visual studio 2008\projects\info2.uebungen\aufgabe_2.8\ag2.8.cpp 8
-Fehler 5 error C2664: 'stringCopy': Konvertierung des Parameters 1 von 'const char [20]' in 'char []' nicht möglich c:\documents and settings\atsoy\my documents\visual studio 2008\projects\info2.uebungen\aufgabe_2.8\ag2.8.cpp 14*
Kann leider ausführliches im google finden.. Oder ich suche falsche keywords..
Bitte um eure Hilfe,
für jeden Tipp dankbar.
MfG,
Alex
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
strlen(quelle)
Beim Aufruf nur den Arraynamen nehmen, die [] gehören nicht mehr zum Namen.
-
so wird es übersetzt:
#include <iostream> #include <cstdio> using namespace std; void stringCopy(char quelle[],char ziel[]){ for (int i=0;i<strlen(quelle);i++) { ziel[i]=quelle[i]; } } int main(void){ char buffer[ 1024 ]; stringCopy("Das ist fantastisch",buffer); std::cerr << buffer << "\n"; }
Deine Fehler:
- strlen ohne []
- du musst einen Puffer anlegen, in den du kopierst. "" geht nicht!
- du musst den Puffer ausgeben, nicht das "Ergebnis" der void-Funktion stringCopy
Anmerkungen:
- #include <string> ist überflüssig, da du keine std::string verwendest
- in C++ cstdio statt stdio.h verwenden
-
manni66 schrieb:
so wird es übersetzt:
#include <iostream> #include <cstdio> using namespace std; void stringCopy(char quelle[],char ziel[]){ for (int i=0;i<strlen(quelle);i++) { ziel[i]=quelle[i]; } } int main(void){ char buffer[ 1024 ]; stringCopy("Das ist fantastisch",buffer); std::cerr << buffer << "\n"; }
Deine Fehler:
- strlen ohne []
- du musst einen Puffer anlegen, in den du kopierst. "" geht nicht!
- du musst den Puffer ausgeben, nicht das "Ergebnis" der void-Funktion stringCopy
Anmerkungen:
- #include <string> ist überflüssig, da du keine std::string verwendest
- in C++ cstdio statt stdio.h verwenden
Danke dir für den Tipp! Hat funktioniert!
@C++ ForumBot: werde in Zukunft aufpassen
@volkard: danke!
MfG,
Alex