在下面的代码中,str_replace_all
会将所有oldc
替换为newc
。 str_replace_first
仅应将oldc
的第一次出现替换为newc
。
因此str_replace_all
循环播放,它会将所有oldc
替换为newc
,这很容易理解。在第二个函数str_replace_first
中,代码是相同的,除了查找和替换char之后的return 1
。我并不完全理解return 1
在这种情况下的作用。从我的理解和#34;休息"循环?我希望有人可以给我一个关于它如何仅取代第一次出现的解释。
size_t str_replace_all(char s[], int oldc, int newc)
{
size_t i;
size_t count = 0;
for (i=0; s[i]!='\0'; i++)
{
if (s[i] == (char)oldc)
{
s[i] = (char)newc;
count++;
}
}
return count;
}
int str_replace_first(char s[], int oldc, int newc)
{
size_t i;
for (i=0; s[i]!='\0'; i++)
{
if (s[i] == (char)oldc)
{
s[i] = (char)newc;
return 1; /* What exactly does this do? */
}
}
return 0;
}
答案 0 :(得分:1)
return 1
转义函数并将1返回给调用它的任何函数。 return
在调用时会有效地转义任何函数,这可以在许多应用程序中用于在函数完成之前退出函数。
在这种情况下:
int str_replace_first(char s[], int oldc, int newc)
{
size_t i;
for (i=0; s[i]!='\0'; i++)
{
if (s[i] == (char)oldc)
{
s[i] = (char)newc;
return 1; /* What exactly does this do? */
}
}
return 0;
}
循环继续,直到找到与oldc匹配的字符,然后用newc替换它,然后立即退出再继续。因此,一旦找到匹配,它将替换它然后退出。
答案 1 :(得分:0)
此处str_replace_first
何时
s[i] == (char)oldc
条件在循环中变为true,然后该字符(旧字符)被新字符替换。然后return 1
将控制权返回给调用函数,值为1.(即循环和函数都不再继续)。
1返回以标记仅替换了1个字符。