//////return-Anweisung in einer for-Schleife
char* duplicate(char* string, int count)
{
char* duped = (char*) malloc(sizeof(char)*(count*strlength(string)+1));
int i=0,j=0,t=0;
for(i=0; i<count*strlength(string); i++,j++)
{
if (j==(strlength(string)))
{
j=0;
t++;
}
if (t==count)
{
duped[i] = '\0';
break;
}
duped[i] = string[j];
}
return duped;
}
Der obige Code funktioniert perfekt, aber das eine unten gibt einen Segmentation Fault. Was ist der Unterschied zwischen ihnen? Sollte eine Funktion nicht anhalten, wenn sie zurückkehrt?
char* duplicate(char* string, int count)
{
char* duped = (char*) malloc(sizeof(char)*(count*strlength(string)+1));
int i=0,j=0,t=0;
for(i=0; i<count*strlength(string); i++,j++)
{
if (j==(strlength(string)))
{
j=0;
t++;
}
if (t==count)
{
duped[i] = '\0';
return duped;
}
duped[i] = string[j];
}
}
[Bitte lesen Sie diese Diskussion darüber, warum der Rückgabewert von 'malloc()' und Familie in 'C' nicht umgewandelt werden soll.] (Http://stackoverflow.com/q/605845/2173917). –
Bitte korrigieren Sie den Einzug, hoffe die Hälfte Ihres Problems wird sortiert, wenn nicht mehr. \ –
Was ist 'strlength()'? Warum benutzt du es anstatt des Standard 'strlen()'? –