我是C语言的新手,我需要有关String函数的帮助。
我有一个名为mcname
的字符串变量,我希望在其中比较特殊字符之间的字符。
例如:
*mcname="G2-99-77"
我希望输出为99
,因为它在-
个字符之间。
我怎么能在C中做到这一点?
答案 0 :(得分:0)
移动弦乐(行走指针)直到你击中一个特殊角色。
然后开始将字符复制到单独的数组中,直到你点击下一个特殊字符(当你第二次遇到特殊字符时放置一个空字符)
答案 1 :(得分:0)
您可以使用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;
}
使用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);
}