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:

    1. strlen ohne []
    2. du musst einen Puffer anlegen, in den du kopierst. "" geht nicht!
    3. du musst den Puffer ausgeben, nicht das "Ergebnis" der void-Funktion stringCopy

    Anmerkungen:

    1. #include <string> ist überflüssig, da du keine std::string verwendest
    2. 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:

    1. strlen ohne []
    2. du musst einen Puffer anlegen, in den du kopierst. "" geht nicht!
    3. du musst den Puffer ausgeben, nicht das "Ergebnis" der void-Funktion stringCopy

    Anmerkungen:

    1. #include <string> ist überflüssig, da du keine std::string verwendest
    2. 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


Anmelden zum Antworten