簡體   English   中英

將字符串復制到另一個C中

[英]copy a string into another C

在K&R書中,下面給出了復制字符串的初始(和正確)函數

void strcpy (char *s, char *t)
{
    while ( (*s++ = *t++) != '\0')
        ;
}

然后據說有一個等價函數

void strcpy (char *s, char *t)
{
    while (*s++ = *t++)
        ;
}

我不明白while循環如何在第二種情況下停止。

謝謝

簡單賦值表達式有兩個效果:

1)將值存儲在左側的左值(這被稱為'副作用')

2)表達式本身求值為一個值 - 分配給該左值的值

while循環將重復,直到其條件計算為0.因此第二個示例中的循環將運行,直到將值0分配給目標字符串。

它正在發生,因為對於表達式,返回表達式的結果。

if( (a = 4) == 4)

if語句將計算為True


所以,在你的情況下

while (*s++ = *t++)

當它到達NUL字符\\0 ,它將評估為False ,循環將退出。

表達式*s++ = *t++在評估后也有一個值。 如果它的計算結果為非零值則條件為true否則為false

while (*s++ = *t++)等同於while ((*s++ = *t++) != 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM