当 *(mychar++) 为假时,它会停止。

4

我有以下代码:

void prepareInput(char* s){
    while ( *(s++) ){
        if(*s == ' ' || *s == '\n')
            *s = '\0';
    }
    return;
}

*(s++)会返回当前指针指向的字符,并将指针s向后移动一位。如果返回的是空字符('\0'),则while循环会停止。


5
0,显然。 - Jan Christoph Terasa
1
是的,这是个愚蠢的问题。 - Jakub Balicki
2
请注意,循环体将不会看到字符串的第一个字符。因此,如果字符串以空格或换行符开头,则在函数返回时仍将保留在字符串中。 - user3386109
2个回答

3
与其他情况相同,当该表达式评估为FALSE时。
换句话说,它与while ( (*(s++)) != 0 ){.....相同。
基本上,它试图找到字符串的空终止符,并且循环将一直持续到找到空终止符(具有值0)。

1

它正在寻找空终止符。

它具有 ASCII 值为 0。


1
顺便提一下,没有叫做“Null”的标准,它要么是“null”,要么是“NUL”... - Sourav Ghosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接