如何获取一个英文句子中所有单词在句子中的起止位置

比如my name is jorze 怎么获取这个句子中所有单词在句子中的起止位置

 char buf[100] = {0};
    gets(buf);

    int n  =strlen(buf);
    char out[10][100] = {0};
    int j = 0,k = 1;

    for (int i = 0;i < n;i ++)
    {
        if (buf[i] >= 'a' || buf[i] <= 'z' || buf[i] >= 'A' || buf[i] <= 'Z')
        {           
            out[j][k++] = buf[i];
        }
        if (buf[i] == ' ')
        {
            out[j][k - 1] = i;
            j ++;
            out[j][0] = i;
            k = 1;          
        }
    }

判断字符,以空格为分割点。。数据保存在二维数组当中。。数组表示,起始位 + 字符串 + 结束位

split分割单词,然后用 str.indexOf得到开始位置,结束位置为开始位置+单词长度

保证输入一定是英文句子的话,可以遇到英文字母就开始记录,然后就一直读取直到遇到非英文字符:

#define SIZE 101
// 句子最长长度为100

int words[SIZE]; // 用来记录字母的位置
char sentence[SIZE]; // 用来储存句子
scanf("%s",sentence); // 输入句子
for(int i=0;i<SIZE;++i)
{
if('a'<=sentence[i]&&sentence[i]<='z' || 'A'<=sentence[i]&&sentence[i]<='Z') words[index++] = i+1; // 遇到字母,记录位置
while('a'<=sentence[i]&&sentence[i]<='z' || 'A'<=sentence[i]&&sentence[i]<='Z' || sentence[i]=='-') ++i;
// 舍弃剩余字母,直到遇到非字母,考虑到是英文句子,可能有'-'
}