【问题标题】:extracting everything up to a substring is encountered C遇到提取子字符串的所有内容 C
【发布时间】:2012-03-16 12:23:51
【问题描述】:

我想知道是否有一种方法可以在我点击字符串中的某个单词之前提取所有内容。我创建的字符串已被分配然后填充。我想在某个子字符串之前创建一个包含所有内容的新字符串,所以

String1 = "我需要咖啡"

我怎样才能在咖啡之前提取所有东西?

有什么想法吗?

谢谢

【问题讨论】:

标签: c string pointers char substring


【解决方案1】:

您可以使用KMP 查找字符串的出现位置,然后提取该索引之前的所有内容。

【讨论】:

    【解决方案2】:

    使用strstr 定位子字符串,strncpy 使用一点指针算法 (n = startOfPrefix - startOfString) 将前缀复制到新缓冲区,不要忘记空终止新字符串。

    如果您只想丢弃子字符串及其之后的所有内容,您可以将strstr 返回的位置设置为'\0',以终止该字符串。

    【讨论】:

      【解决方案3】:

      您可以使用strstr 来查找子字符串的出现。然后您可以使用strncpy 复制您需要的包机数量。

         char str[] = "I need coffee";
         char dest[255];
         int num =strstr(str,"coffe") - str ;
         strncpy(dest,str,num);
      

      【讨论】:

        【解决方案4】:

        当然,您可以为此使用strstr()

        const char *substring = strstr(string1, "coffee");
        
        if (substring) {
            size_t len = substring - string1;
            char *string2 = malloc(len + 1);
        
            if (string2) {
                memcpy(string2, string1, len);
                string2[len] = 0;
        
                /* Do something with string2 */
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-01
          • 2010-12-23
          • 2014-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多