【发布时间】:2014-07-31 06:04:50
【问题描述】:
我试图理解从标准输入复制字符的函数,但我无法理解 while 循环和它后面的代码......
这里的 while 循环是如何工作的?
据我了解,这意味着直到to[] 中的ith 字符不等于from[] 的ith 字符继续添加i 我正确吗??
如果是,那么两个变量中的第 i 个字符如何相等?
这是一个简短的代码:
void copy(char to[] , char from[])
{
int i;
i = 0 ;
while ((to[i] = from[i]) != '\0')
++i;
}
【问题讨论】:
-
这是一个字符串副本。它将 from 的第 i 个值分配给 to。然后它检查这个值是否为“NUL”,如果不是(即我们不在字符串的末尾),则增加 i 并继续复制。
-
“这意味着直到第 i 个字符从 to[] 不等于” -
=与==非常不同! -
nit-pick:我可能会将此函数更改为
void copy(char *to, const char *from),并且最好 - 尽管这需要你重构现有代码 -int copy (char *to, const char *from, size_t max)。后一个函数避免溢出,并返回被复制的字符数 -
@EliasVanOotegem 如果我在开始时定义 MAXLENGTH = x 会不会变得不必要??
-
@ArchKudo:也许,但这会使您的复制功能相当具体(例如:不可重复使用)
标签: c function while-loop void