Zurück   Entwickler-Forum > C++ > Visual C++

Antwort
 
Themen-Optionen Ansicht

Zeichen im Chararray ersetzen
Alt 19.03.2010, 20:44   #1
LML
Neuer Benutzer
 
LML ist offline
Registriert seit: 16.03.2009
Beiträge: 5
LML befindet sich auf einem aufstrebenden Ast
Standard 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:
Zitat:
Unbehandelte Ausnahme in hangman.exe: 0xC0000005: Access Violation.

Geändert von LML (19.03.2010 um 20:50 Uhr)
  Mit Zitat antworten

Anzeige

Alt 19.03.2010, 21:08   #2
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

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

________________________________________
C-Ecke
  Mit Zitat antworten

Alt 19.03.2010, 22:31   #3
LML
Neuer Benutzer
 
LML ist offline
Registriert seit: 16.03.2009
Beiträge: 5
LML befindet sich auf einem aufstrebenden Ast
Standard

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
  Mit Zitat antworten

Alt 20.03.2010, 09:42   #4
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

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

________________________________________
C-Ecke
  Mit Zitat antworten

Alt 20.03.2010, 12:37   #5
LML
Neuer Benutzer
 
LML ist offline
Registriert seit: 16.03.2009
Beiträge: 5
LML befindet sich auf einem aufstrebenden Ast
Standard

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
  Mit Zitat antworten

Alt 20.03.2010, 13:39   #6
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

Dieser Code läuft hier einwandfrei
__________________
Christian

________________________________________
C-Ecke
  Mit Zitat antworten

Alt 20.03.2010, 14:27   #7
LML
Neuer Benutzer
 
LML ist offline
Registriert seit: 16.03.2009
Beiträge: 5
LML befindet sich auf einem aufstrebenden Ast
Standard

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*)'
  Mit Zitat antworten

Alt 20.03.2010, 15:16   #8
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

Anhang 1217

Siehe Bild
__________________
Christian

________________________________________
C-Ecke

Geändert von Christian Marquardt (28.03.2010 um 17:12 Uhr)
  Mit Zitat antworten

Alt 13.04.2010, 13:27   #9
HAW
Zaungast
 
HAW ist offline
Registriert seit: 11.07.2008
Beiträge: 27
HAW befindet sich auf einem aufstrebenden Ast
Standard

char *tmp[2]; //sollte char tmp[2]; sein - sonst wär's ja ein Array von Zeigern
  Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
array, c++, char, chararray, string

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu



Alle Zeitangaben in WEZ +2. Es ist jetzt 08:11 Uhr.



© 1995–2009 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags.