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