[C] Speicherverletzung bei strcpy()

mc_gulasch

Erfahrenes Mitglied
Hi zusammen,

ich hab folgendes Problem:
C:
for (i=0;i<strlen(string);i++)
{
 switch((unsigned int) string[i])
{
/*andere faelle*/
case(40):
 for(zaehler=i;zaehler<deleter;zaehler++)
	string[zaehler-i]=string[zaehler];
/*usw*/
}
}
Dieser Code läuft nicht mit der Fehlermeldung einer Speicherverletzung.
Auch Versuche mit:
C:
 for(zaehler=i;zaehler<deleter;zaehler++)
	*(string+zaehler-i)=*(string+zaehler);				
/*********************************************/
strcpy(holder,string) /*<- das geht */
 for(zaehler=i;zaehler<deleter;zaehler++)
	string[zaehler-i]=holder[zaehler];
/*********************************************/
ANFANG
if (brain!=0)
strcpy(string,holder);
for (i=0;i<strlen(string);i++)
{
 switch((unsigned int) string[i])
{
/*andere faelle*/
case(40):
strcpy(holder,&string[i]) /* <- das geht */
brain = 1;
goto ANFANG;
/*usw*/
}
}
/*Hab auch schon "holder" dyn.und statisch alloc. */

Kann mir da wer helfen? Hab keine Ahnung was da passiert. Zur Erklärung vielleicht noch:
Ich hab nen String aus n Zeichen bestehend. Im case(40) wird dieser dann bis zu Stelle i verarbeitet. Nach dieser Verarbeitung will ich den String an der Stelle i abschneiden, genauer will ich den String ab der Stelle i auf die Stelle 0 vorziehen und den bereits verarbeiteten Teil vergessen.

string[] = blablub
String1: bla
Verarbeitung
string[] = blub

Ich hoffe da hat wer ne zündende Idee. Danke euch!



//EDIT

Hat sich erledigt. Oh Mann wie blöd. Ich übergebe *string als Parameter in der Funktion. Da kann ich natürlich lang rumändern. Sorry.
 
Zuletzt bearbeitet:
Es wäre wichtig zu wissen wie du "deleter" berrechnest. Aus den Codefragmenten läßt sich der Fehler nicht erkennen.
 
Zurück