//////return語句for循環
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;
}
上面的代碼完美地工作,但下面的人給分段錯誤。他們有什麼區別?看到回報時不應該停止功能嗎?
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];
}
}
[請參閱此討論關於爲什麼不在'C'中投射'malloc()'和家族的返回值。](http://stackoverflow.com/q/605845/2173917)。 –
請修復縮進,希望你的一半問題得到排序,如果不是更多。\ –
什麼是'strlength()'?你爲什麼使用它而不是標準的'strlen()'? –