2013-04-22 55 views
0

这可能是一些基本的问题来分割字符串,但我真的不能找到一个答案:我需要拆分有两个数字的字符串,为两个字符串C.Ç - 如何通过一个子

实施例:

1-> 2到1和2

我使用的strtok,但它需要一个系列字符的分裂,则不能指定的序列是除数。

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

任何帮助将不胜感激!

如何将此标记为完全相同?它甚至不接近...

+0

看到http://stackoverflow.com/questions/2523467/how-to-split-a-string-to-2-strings-in-c – ericosg 2013-04-22 05:05:44

+0

@Lautaro嘿,如果我听起来很粗鲁,不要介意。我是以自己过去的经历作为新手说的。如果你仔细阅读了某些内容,那么你会惊讶你会做出多少微妙的发现。似乎对我们所有人都很有吸引力,但如果我们努力一点,它总是会付出长期的代价。 – 2013-04-22 05:10:52

+1

@ericosg该链接不相关,因为'strtok'只处理单个字符的分隔符,这就是链接中显示的全部内容。它可以用'strstr'完成。 – 2013-04-22 05:28:16

回答

4

使用'sscanf()'。不要问别人为你做它,因为它太容易了,如果你给了几分钟去了解它,特别是它的格式说明串nuances.Here是这就够了一个链接:

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

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

+0

我不认为这是什么OP是在寻找因为你的答案似乎也没有什么帮助。 – ericosg 2013-04-22 05:06:49

+0

@ericosg让我们希望编辑帮助。否则我会删除我的答案。 – 2013-04-22 05:08:04

+0

更好,-1 + 1 :) – ericosg 2013-04-22 05:09:27

1

好这里的东西让你开始:

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; 
    } 
    } 
} 

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

0

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

#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