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

读取C中特殊字符之间的字符,c,C,我是C语言新手,需要字符串函数方面的帮助 我有一个名为mcname的字符串变量,我想在这个变量上比较特殊字符之间的字符 例如: *mcname="G2-99-77" 我希望输出为99,因为这在-字符之间 在C语言中,我怎样才能做到这一点呢?移动字符串(移动指针),直到你碰到一个特殊字符 然后开始将字符复制到单独的数组中,直到你命中下一个特殊字符(当你第二次遇到特殊字符时放置一个空字符)你可以使用strtok或sscanf 使用sscanf: #include <stdio.h> i

我是C语言新手,需要字符串函数方面的帮助

我有一个名为
mcname
的字符串变量,我想在这个变量上比较特殊字符之间的字符

例如:

*mcname="G2-99-77"
我希望输出为
99
,因为这在
-
字符之间

在C语言中,我怎样才能做到这一点呢?

移动字符串(移动指针),直到你碰到一个特殊字符


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

你可以使用
strtok
sscanf

使用
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;
}
sscanf()
具有很大的灵活性。如果使用正确,代码可以很容易地解析字符串。
确保测试
sscanf()
返回值

%2[A-Z0-9]
表示从集合
'A'
'Z'
'0'
'9'
扫描最多2个字符
如果代码目标是除
'-'
以外的任何2个
字符,请使用
%2[^-]

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);
}
char*mcname=“G2-99-77”;
字符前缀[3];
半焦中[3];
字符后缀[3];
int cnt=sscanf(mcname,“%2[A-Z0-9]-%2[A-Z0-9]-%2[A-Z0-9]”,前缀,中间,
后缀);
如果(cnt!=3){
puts(“分析错误\n”);
}
否则{
printf(“前缀:中间:后缀:\n”,前缀,中间,后缀);
}

两个问题:1。你如何定义“特殊角色”?,更重要的是,2。到目前为止你做了什么?在有人回答您的问题之前,回答问题2是至关重要的。C中没有字符串变量。您可能指的是
0
-终止的
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);
}