我有一个如下所示的字符串:{opt,2}{home,4}...
我必须将opt和2扫描成字符串和整数。我这样做:
char str[40] = "{opt,2}{home,4}";
char s[20];
int *x;
sscanf(str, "{%[^,],%[0-9]}", s,&x);
这段错误。什么是正确的方法?
答案 0 :(得分:2)
要扫描这样的文字,你不需要正则表达式,你可以使用简单的scanf
说明符。
char s[16]; /* The string in the pair */
int n; /* The integer in the pair */
int len; /* The length of the pair */
for (; sscanf(buf, "{%[^,],%d}%n", s, &n, &len) == 2; buf += len) {
/* use str and n */
}
%n
说明符只接收sscanf
调用中读取的字符数,并将其存储在匹配参数中(在本例中为len
)。我们使用这个值,以便我们可以递增正在读取的buf
,以便可以读取下一个string-int对。