- 论坛徽章:
- 0
|
有一个问题困惑了我好久都没想出其理由,在此请教大虾:
unix下许多软件在进行字符串操作时并不使用标准库函数而使用另一种方法来实现?
例如:
字符串复制
unsigned int str_copy(s,t)
register char *s;
register char *t;
{
register int len;
len = 0;
for (; {
if (!(*s = *t)) return len; ++s; ++t; ++len;
if (!(*s = *t)) return len; ++s; ++t; ++len;
if (!(*s = *t)) return len; ++s; ++t; ++len;
if (!(*s = *t)) return len; ++s; ++t; ++len;
}
}
为什么不用strcpy或是strncpy?
还有在进行标准输入输出时为什么 用下面的函数而不用stdin,stdout?
int substdio_put(s,buf,len)
register substdio *s;
register char *buf;
register int len;
{
register int n;
n = s->;n;
if (len >; n - s->;p) {
if (substdio_flush(s) == -1) return -1;
/* now s->;p == 0 */
if (n < SUBSTDIO_OUTSIZE) n = SUBSTDIO_OUTSIZE;
while (len >; s->;n) {
if (n >; len) n = len;
if (allwrite(s->;op,s->;fd,buf,n) == -1) return -1;
buf += n;
len -= n;
}
}
/* now len <= s->;n - s->;p */
byte_copy(s->;x + s->;p,len,buf);
s->;p += len;
return 0;
}
仔细查阅这些库函数也不存在什么安全漏洞,效率我想更不是问题?
究竟是何原因,请大虾指点一二. |
|