仅打印c中子串的第一个出现

时间:2016-10-20 16:18:45

标签: c substring

我是C的新手。我有这样的代码

#include <stdio.h>
#include <string.h>

int i = 0;
int main()
{
    char text[] = "..... $it is beautiful : $yes you are correct....";
    char * sub = "$";
    char * ret = strstr(text, sub);

    if (ret != NULL)
    {
         printf("the statement is : %s", ret);
    }
}

我想只打印代码的这一部分:$it is beautiful。  有没有办法只打印那个声明?让我们假设这是全身文本的一部分,所以除了使用strlen之外的任何想法? 当出现第二个$时,不应该打印。这是我的基本要求

2 个答案:

答案 0 :(得分:0)

根据您的输出要求,strchr:$一起使用

#include <stdio.h>
#include <string.h>

int main() {
    char text[] = "..... $it is beautiful : $yes you are correct....";
    char * ret = strstr(text, "$");
    if (ret != NULL) {
        char *colon;
        if (colon = strrchr(ret, ':'))
            *colon = '\0';
        printf("The statement is: %s", ret);
    }
    return 0;
}

<强>输出

  

声明是:$美丽

答案 1 :(得分:0)

这应该有用。

 #include <stdio.h>
 #include <string.h>

 int i=0;
 int main()
{
    char text[] = "..... $it is beautiful : $yes you are correct....";
    char* sub = "$";
    char* ret = strstr(text,sub);
    char *out = malloc(strlen(text)+1); //To make the solution generic

    if (ret!=NULL )
     {
         sscanf(ret, "$%[^$^:]", out);
         printf("the statement is : [%s] \n",out );
     }

     free(out);
}