由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C库函数:strpbrk() 的实现一问
相关主题
请问以下代码有什么错误?问几个问题
c++ string 一问why int** cannot convert to const int** ?
C库函数的实现问一个打开文件的问题
size不固定的struct怎么定义呀?C++ Strategies and Tactics 书上一个问题求助
strlen怎么实现的c++ 得最基本问题
请教一个关于字符指针的简单问题蔡鸟C++ 类型问题
Is it safe?a simple C++ question
Why does default exception use char *?a string define question (c++)
相关话题的讨论汇总
话题: accept话题: char话题: strpbrk话题: const话题: why
进入Programming版参与讨论
1 (共1页)
f******n
发帖数: 90
1
这是glibc 2.6 的实现.
/* Find the first occurrence in S of any character in ACCEPT. */
char *
strpbrk (s, accept)
const char *s;
const char *accept;
{
while (*s != '\0')
{
const char *a = accept; // *** my comment: unnecessary! ???
while (*a != '\0')
if (*a++ == *s)
return (char *) s;
++s;
}
return NULL;
}
I don't understand why there is an extra temp variable "a" defined at ***.
Why don't we just use accept? Anyway, changes made to accep
R***Z
发帖数: 1167
2
Because otherwise the result would be wrong, hehe
"accept" will be used again and again for all characters in s, in every
iteration you have to start from the beginning of "accept"

【在 f******n 的大作中提到】
: 这是glibc 2.6 的实现.
: /* Find the first occurrence in S of any character in ACCEPT. */
: char *
: strpbrk (s, accept)
: const char *s;
: const char *accept;
: {
: while (*s != '\0')
: {
: const char *a = accept; // *** my comment: unnecessary! ???

f******n
发帖数: 90
3
I overlooked the outside loop. Thanks!
1 (共1页)
进入Programming版参与讨论
相关主题
a string define question (c++)strlen怎么实现的
请问const myClass &src 和myClass const &src有什么区别?请教一个关于字符指针的简单问题
大家看看这个简单的qsort排序的问题Is it safe?
[合集] 一个指针的小问题Why does default exception use char *?
请问以下代码有什么错误?问几个问题
c++ string 一问why int** cannot convert to const int** ?
C库函数的实现问一个打开文件的问题
size不固定的struct怎么定义呀?C++ Strategies and Tactics 书上一个问题求助
相关话题的讨论汇总
话题: accept话题: char话题: strpbrk话题: const话题: why