Announcement

Collapse
No announcement yet.

Zeichen im Chararray ersetzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeichen im Chararray ersetzen

    yo,
    wir sollen fuer die Schule eine Projektaufgabe machen, dabei hat unsere Gruppe sich fuer Hangman entschieden.
    Ich habe es derzeit auch so weit dass das Alphabet in 3 Zeilen ausgegeben wird und die Buchstaben die im der Benutzer bereits eingegeben hat entweder gruen (falls im Wort enthalten) oder rot (falls nicht im Wort enthalten) angezeigt werden. Dafuer uebergebe ich einfach zwei Arrays mit den bereits versuchten Buchstaben, wobei die Array derzeit allerdings noch von mir bei Programmstart beschrieben werden.
    Nun möchte ich allerdings eingegebene Buchstaben ueberpruefen, indem ich einfach den Buchstaben, das zu loesende Wort und die derzeitige Loesung (also z.B. "_ _ e _ _ a _") uebergebe und dann im Wort nachgucke an welchen stellen der Buchstabe steht und falls er vorhanden ist den Buchstabe zum einem den Strings fuer die Anzeige (gruen/rot) anhaengen und in der Loesung die Unterstriche an der Stelle durch den Buchstaben ersetzen.

    hier der Code für die Funktion welche die Unterstriche an den ermittelten Stellen ueberschreiben soll:

    Code:
    // _add_to_currency - char strCurrency[] -> Beinhaltet die bisherige Loesung
    //                  - char chrLetter     -> Der Buchstaben der eingefuegt werden soll
    //                  - int intPositions[] -> Die Positionen an die der Buchstabe gehoert
    //									- int intPos         -> Anzahl der zu aendernen Zeichen
    // Beschreibung: Ersetzt die Unterstriche durch den Buchstaben (in der Loesung)
    // Rückgabewert: N/A
    void _add_to_currency(char strCurrency[], char chrLetter, int intPositions[], int intPos)
    {
    	for(int i=0;i<intPos;i++)
    	{
    		strCurrency[intPositions[i]] = chrLetter;
    	}
    }

    leider erhalte ich immer einen Fehler wenn ich den Wert im Array ueberschreiben moechte;/

    Zudem erhalte ich auch hier einen Fehler:
    Code:
    strcat(strOut, (char*)intEingabe);
    das chararray ist folgendermaße deklariert:
    Code:
    char *strOut = new char[26];
    int intEingabe=0;
    	
    strcpy(strOut, "AGKL");
    intEingabe wird am Ende einer Endlosen do-while Schleife eingelesen:
    Code:
    intEingabe = _getch();

    Die Fehler treten in Form von Programmabstuerzen auf.
    Bei debuggen kommt dabei folgene Fehlermeldung:
    Unbehandelte Ausnahme in hangman.exe: 0xC0000005: Access Violation.
    Zuletzt editiert von LML; 19.03.2010, 21:50.

  • #2
    Da wird wohl irgendwo ein Null-Zeiger sein. Sollte sich mit debuggen finden lassen. Es gibt hier schon div. Threads zu dieser Hausaufgabe

    In strcat kann nicht mit (char*)int gearbeitet werden

    http://www.cplusplus.com/reference/c...string/strcat/
    Christian

    Comment


    • #3
      bei (char) gibt er allerdings einen Fehler aus der darauf hinweist das char nicht in const char * umgewandelt werden kann.. einzige Moeglichkeit das er keinen Fehler ausgibt ist (char*) :/

      hab vorher schon alles mit debugger durchlaufen ladder, der Stringinhalt war immer ok und dann kam die oben beschriebene Fehlermeldung

      Comment


      • #4
        char *test="hallo";
        int i=5;
        char *tmp[2];
        itoa(i, tmp,10);
        strcat(test,tmp);
        Christian

        Comment


        • #5
          dieser code gibt mir genau 2 Fehler:

          error C2664: 'itoa' : Konvertierung des Parameters 2 von 'char *[2]' in 'char *' nicht moeglich
          Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

          error C2664: 'strcat' : Konvertierung des Parameters 2 von 'char *[2]' in 'const char *' nicht moeglich
          Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

          Comment


          • #6
            Dieser Code läuft hier einwandfrei
            Christian

            Comment


            • #7
              komisch;/
              benutze den C++ compiler von Visual C++ von Microsoft Visual Studio 6.0

              ich versuchs mal mit nem anderem compiler

              hm, auch nen Fehler:
              cannot convert `char**' to `const char*' for argument `2' to `char* strcat(char*, const char*)'

              Comment


              • #8


                Siehe Bild
                Zuletzt editiert von Christian Marquardt; 28.03.2010, 17:12.
                Christian

                Comment


                • #9
                  char *tmp[2]; //sollte char tmp[2]; sein - sonst wär's ja ein Array von Zeigern

                  Comment

                  Working...
                  X