C - 如何通过子字符串拆分字符串

时间:2013-04-22 05:01:17

标签: c split strtok

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

示例:

1-> 2分为1和2

我正在使用strtok,但需要分割一系列字符,你不能指定一个序列作为除数。

我不能使用ANSI C以外的任何内容。

任何帮助将不胜感激!

如何将此标记为完全重复?它甚至不是很接近......

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分: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字符串中的下几个字符。

答案 2 :(得分:1)

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

#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