比如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;
// 舍弃剩余字母,直到遇到非字母,考虑到是英文句子,可能有'-'
}