这可能是一些基本问题,但我真的找不到答案:我需要将一个包含两个数字的字符串拆分为C中的两个字符串。
示例:
1-> 2分为1和2
我正在使用strtok,但需要分割一系列字符,你不能指定一个序列作为除数。
我不能使用ANSI C以外的任何内容。
任何帮助将不胜感激!
如何将此标记为完全重复?它甚至不是很接近......
答案 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