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]);
}