我在C中使用strsep()函数有问题。我想将一个字符串分成两个部分。该字符串包含关于当前播放的歌曲的信息,以ARTIST - TITLE格式,因此艺术家和标题是分开一个空格,一个破折号,再次一个空格。我想用这个把它分开,“-”“--”因为有些艺术家在他们的名字上有一个破折号,所以行不通。
例如,当我尝试这个代码时,"Michel Telo - Ai Se Eu Te Pego":
// String is in tmp
while ((token = strsep(&tmp, " - ")) != NULL)
{
printf("%s\n", token);
}我明白了:
[root@runeaudio ~]# ./board
Michel
Telo
Ai
Se
Eu
Te
Pego而不是这样:
[root@runeaudio ~]# ./board
Michel Telo
Ai Se Eu Te Pego似乎strsep()正在将分隔符划分为三个字符:“”、"-“、”“和在它们之间使用OR,但我希望它能够查找”-“。知道怎么解决这个问题吗?
发布于 2015-05-16 17:03:46
下面是一段代码,您将只根据“-”获取字符串
#include <stdio.h>
int main()
{
char token[100];
int i,j=0,flag=0;
char tmp[]="Michel Telo - Ai Se Eu Te Pego";
for(i=0;tmp[i]!='\0';i++)
{
if((tmp[i]>='a' && tmp[i]<='z') || (tmp[i]>='A' && tmp[i]<='Z') || (tmp[i]==32 && !isalpha(tmp[i+1])))
{
flag=0;
token[j++]=tmp[i];
continue;
}
else if(flag==0 && tmp[i]=='-')
{
token[j]='\0';
j=0;
flag=1;
printf("%s\n",token);
}
}
token[j]='\0';
printf("%s\n",token);
return 0;
}https://stackoverflow.com/questions/30278332
复制相似问题