void strcpy(char *s, char *t)
{
while ((*s++ = *t++) != '\0');
}
和
void strcpy(char *s, char *t)
{
while (*s++ = *t++);
}
是一样的,这是什么意思?什么能消除这种情况呢?
答案 0 :(得分:4)
表达式*s++ = *t++
仍然有结果,并且该结果可以用作条件。更准确地说,结果将是复制的字符,并且您(应该)知道所有非零值都被认为是“真”,并且您也(应该)知道C中的字符串是零终止
所以循环的作用是复制字符,直到到达字符串终止符。
答案 1 :(得分:-1)
条件是检查是否已到达字符串的结尾而不是超过它。如您所知,在C中,字符串以'\0'
字符结束
答案 2 :(得分:-1)
检查是否已达到字符串\0
NUL
的结尾,同时将*t
的值复制到*s
,然后递增两个指针。
要回答你的第二个问题,请考虑一下,
之间有什么区别
if(a != 0)
&安培;
if(a)
它只有两种编写相同代码的方式。我能想到的唯一区别是代码清晰度。第一个更冗长,更容易阅读,理解和维护。