Hallo zusammen!
Ich will gerade ein kleines C-Programm schreiben das einen String verarbeitet und wie ihr vielleicht schon an meinem Quelltext seht programmiere ich noch nicht sehr lange in C.
Die erste Funktion macht aus einem Char einen Null-Terminierten String mit nur einem Zeichen. Das funktioniert auch einwandfrei.
Der zweiten Funktion wird in instring ein beliebiger String übergeben, von dem die letzten count Zeichen zurückgegeben werden sollen. Dazu lege ich eine Zählvariable und ein Char-Array an, wobei das Array als Buffer dient. Der Buffer wird initiiert und danach die Größe des Arrays auf die Ausgangsstringlänge angepasst. Wenn count Zeichen kopiert werden sollen, muss noch eins für die Null-Terminierung addiert werden. In einer for-Schleife von count bis zum Stringende werden dann die Zeichen von instring einzeln in den Buffer geschrieben. Am Ende steht auch in Buffer das richtige Ergebnis drin.
Das Problem macht der return-Befehl. Nach dem return bekomme ich folgende Fehlermeldung: „Run-Time Check Failure #2 - Stack around the variable ‚outstring‘ was corrupted.“.
Weiß jemand wo das Problem liegt? An anderen Stellen hat die Größenanpassung des Arrays wie hier gemacht auch funktioniert und ein Char-Array als Rückgabewert hat ja in der anderen Funktion auch getan. Die Visual C+±Hilfe hat mich leider nicht weitergebracht.
Quelltext:
#include
#include
#include
#include
#include
// …
char *terminatechar(char single_char){
char result[2];
result[0] = single_char;
result[1] = 0;
return result;
}
char *strright(char *instring, int count){
int x;
char outstring[1] = „“;
outstring[count + 1];
for(x = strlen(instring) - count; x