while(!isalpha(*p)&&*p) p++

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:06:00
有人可以解释一下这句话的意思吗?
void ComWord(void)
{int i, j ;
char word[21], *p ;
for(i = 0 ; i < maxline ; i++) {
p = xx[i] ;
j = 0 ;
memset(word, 0, 21) ;
while(*p) {
if(isalpha(*p)) {
word[j++] = *p++ ;
if(*p) continue ;
}
if(strlen(word) == 2) yy[0]++ ;
else if(strlen(word) == 4) yy[1]++ ;
else if(strlen(word) == 6) yy[2]++ ;
else if(strlen(word) == 8) yy[3]++ ;
if(strlen(word)) yy[4]++ ;
j = 0 ;
memset(word, 0, 21) ;
while(*p && (!isalpha(*p))) p++ ;
}
}
谁能解释一下程序各个作用 尤其是if(*P) continue;和while(*p&&(!isalpha(*P))) p++;
这两句话

while(*p && (!isalpha(*p))) p++ ;
是当isalpha(*p)的值取反在和*p的值相与,如果为真,
就执行p++

如果*p不是英文字母并且也不等于\0
则p++
也就是p指向后面一个元素