while那边的一段是什么意思啊

img

img


while (*p != '\0') 
    {
        while (*p == ' ') p++;
        if (*p == '\0') break;
        ptr[i] = p;
        while (*p != ' ' &&  *p != '\0') p++;
        if (*p == ' ') {   q = p; p++; *q = '\0';   }
        i++;
    }
    
    for (i = 0; i < 9; i++)
        printf("%s\n", ptr[i]);
}

没听明白你的意思

见注释,供参考:

while (*p != '\0') //指针 p 指向字符串,且不是字符串结尾
    {
        while (*p == ' ') p++;//如果单词前面有空格,则走完空格
        if (*p == '\0') break;//如果p已走到是整个字符串的结尾,则跳出循环
        ptr[i] = p;     //将单词的首地址记录到指针数组 ptr[i]
        while (*p != ' ' &&  *p != '\0') p++;//指针p移到单词的结尾
        if (*p == ' ') {q = p; p++; *q = '\0';}//在单词结尾处加上'\0',作为一个字符串保存
        i++;  //指针数组 ptr[] 下标加 1,为记录下一个单词做准备。
    }

    for (i = 0; i < 9; i++)//输出单词
        printf("%s\n", ptr[i]);
}


 
while (*p != '\0')  //判断字符是不是结束符 
    {
        while (*p == ' ') p++; //如果字符为空格, 则进入下一个字符
        if (*p == '\0') break;  //如果字符是结束符, 跳出循环
        ptr[i] = p; // 将p 当前字符的首位指向ptr[]数组
        while (*p != ' ' &&  *p != '\0') p++;  //如果不是空格和结束符, 则一直移动到下一个字符
        if (*p == ' ') {   q = p; p++; *q = '\0';   } //如果字符为空格, q = p, p移到下一个字符, *q将空格变成结束符
        i++; //进入下一个字符串查找
    }
    
    for (i = 0; i < 9; i++)
        printf("%s\n", ptr[i]);
}