读取C中特殊字符之间的字符

时间:2014-01-21 05:33:47

标签: c

我是C语言的新手,我需要有关String函数的帮助。

我有一个名为mcname的字符串变量,我希望在其中比较特殊字符之间的字符。

例如:

*mcname="G2-99-77"

我希望输出为99,因为它在-个字符之间。

我怎么能在C中做到这一点?

3 个答案:

答案 0 :(得分:0)

移动弦乐(行走指针)直到你击中一个特殊角色。

然后开始将字符复制到单独的数组中,直到你点击下一个特殊字符(当你第二次遇到特殊字符时放置一个空字符)

答案 1 :(得分:0)

您可以使用strtoksscanf

来完成此操作

使用sscanf

#include <stdio.h>
int main()
{
    char str[64];
    int out;
    char mcname[] = "G2-99-77";
    sscanf(mcname, "%[^-]-%d", str, &out);
    printf("%d\n", out);
    return 0;
}

使用strtok

#include <stdio.h>
#include <string.h>
int main()
{
    char *str;
    int out;
    char mcname[] = "G2-99-77";
    str = strtok(mcname, "-");
    str = strtok (NULL, "-");
    out = atoi(str);
    printf("%d\n", out);
    return 0;
}

答案 2 :(得分:0)

sscanf()具有很大的灵活性。正确使用,代码可以很容易地解析字符串 请务必测试sscanf()返回值。

%2[A-Z0-9]表示从'A''Z'以及'0''9',最多可扫描2个字符。
如果代码目标是任何 2 %2[^-]而不是char,请使用'-'

char *mcname = "G2-99-77";
char prefix[3];
char middle[3];
char suffix[3];
int cnt = sscanf(mcname, "%2[A-Z0-9]-%2[A-Z0-9]-%2[A-Z0-9]", prefix, middle, 
    suffix);
if (cnt != 3) {
  puts("Parse Error\n");
}
else {
  printf("Prefix:<%s> Middle:<%s> Suffix:<%s>\n", prefix, middle, suffix);
}