首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数-分隔符中的更多字符

函数-分隔符中的更多字符
EN

Stack Overflow用户
提问于 2015-05-16 16:50:42
回答 1查看 3.1K关注 0票数 2

我在C中使用strsep()函数有问题。我想将一个字符串分成两个部分。该字符串包含关于当前播放的歌曲的信息,以ARTIST - TITLE格式,因此艺术家和标题是分开一个空格,一个破折号,再次一个空格。我想用这个把它分开,“-”“--”因为有些艺术家在他们的名字上有一个破折号,所以行不通。

例如,当我尝试这个代码时,"Michel Telo - Ai Se Eu Te Pego":

代码语言:javascript
运行
复制
// String is in tmp
while ((token = strsep(&tmp, " - ")) != NULL)
{
    printf("%s\n", token);
}

我明白了:

代码语言:javascript
运行
复制
[root@runeaudio ~]# ./board
Michel
Telo


Ai
Se
Eu
Te
Pego

而不是这样:

代码语言:javascript
运行
复制
[root@runeaudio ~]# ./board
Michel Telo
Ai Se Eu Te Pego

似乎strsep()正在将分隔符划分为三个字符:“”、"-“、”“和在它们之间使用OR,但我希望它能够查找”-“。知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-16 17:03:46

下面是一段代码,您将只根据“-”获取字符串

代码语言:javascript
运行
复制
#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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30278332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档