【问题标题】:C - How to split a string by a substring [duplicate]C - 如何通过子字符串拆分字符串[重复]
【发布时间】:2013-04-22 05:01:17
【问题描述】:

这可能是一些基本问题,但我真的找不到答案:我需要将一个包含两个数字的字符串拆分为 C 中的两个字符串。

例子:

1->2 分为 1 和 2

我用的是strtok,但是它需要一系列字符来拆分,你不能指定一个序列作为除数。

我不能使用 ANSI C 之外的任何东西。

任何帮助将不胜感激!

如何将此标记为完全重复?它甚至没有接近......

【问题讨论】:

  • @Lautaro 嘿,如果我听起来很粗鲁,请不要介意。我是根据自己过去作为新手的经历来讲述的。如果您仔细阅读某件事,那么您会惊讶于有多少细微的发现你会做的。即时答案对我们所有人来说似乎很诱人,但从长远来看,如果我们努力工作,它总是会有所回报。
  • @ericosg 该链接不相关,因为strtok 仅处理单字符分隔符,这就是链接中显示的全部内容。可以通过strstr 完成。
  • @ericosg 恕我直言,您的回答并没有太大帮助...
  • @Sheer Fish 别介意,我没有走错路

标签: c split strtok


【解决方案1】:

使用“sscanf()”。不要让别人为你做这件事,如果你花几分钟时间理解它就太容易了,尤其是它的格式说明符字符串细微差别。这里有一个链接就足够了:

http://www.cplusplus.com/reference/cstdio/sscanf/

提示: sscanf (source_string,"%d->%d",&num1,&num2);

【讨论】:

  • 我认为这不是 OP 想要的,而且您的回答似乎也没有帮助。
  • @ericosg 希望编辑对您有所帮助。否则我将删除我的答案。
  • @ericosg 我似乎忘记了在这个论坛中只提供链接并不能算作好的答案,因为链接可能会被破坏,而且一切都说了又做了,人们必须再看看那个新的答案的网站。
  • 谢谢!这实际上有帮助。我有点着急,很累,而且我住的地方已经很晚了,我应该自己解决这个问题。
【解决方案2】:

这里有一些东西可以帮助你开始:

const char *FindSubString( const char *sub, const char *src )
{
  // Loop through the source string
  while(*src++)
  {
    // Only check for matching character in beginning of sub sequence
    if(*src == *sub)
    {
      return src;
    }
  }
}

这只是找到指向子序列中第一个匹配字符的指针和源字符串。我相信你可以在内部循环中收集一些东西,检查sub 字符串是否与src 字符串中的接下来的几个字符匹配。

【讨论】:

    【解决方案3】:

    这是一种蛮力方法。只适合快速修复。

    #include <stdlib.h>
    #include <ctype.h>
    
    void extract_2_numbers (char *str, int *a, int *b) {
      *a = atoi (str);
      while (isdigit(*str)) str++;
      while (!isdigit(*str)) str++;
      *b = atoi (str);
    }
    
    int main () {
      int x, y;
      char *string = "12--->24";
    
      extract_2_numbers (string, &x, &y);
      printf ("%d\t%d\n", x, y);
      return 0;
    }
    

    打印此输出:

    12    24
    

    【讨论】:

      猜你喜欢
      • 2016-04-28
      • 2019-09-22
      • 2016-01-16
      • 1970-01-01
      • 2012-09-18
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多