需要使用sscanf获取值解析..用作下面但没有得到结果..
字符串:abc_2_4 我需要得到4
char sentence []="abc_1_2";
char str [20];
int i,j;
sscanf (sentence,"%s_%d_%d",str,&i,&j);
printf ("%s %d %d\n",str,i,j);
abc_1_2 32768 134520820
我怀疑我们是否可以在sscanf中解析字符串中使用非白色空格字符'_'。
请给我一些想法。
答案 0 :(得分:3)
sscanf()
在解析%s
时不会“向前看”,知道它应该以下划线结尾,这不是%s
转换说明符的含义。
您需要使用%[^_]
来捕获除下划线以外的所有字符。
答案 1 :(得分:2)
sscanf
期望%s标记为whitespace
分隔符。但是,abc
和_
之间没有空格。所以它也会计算_
。
因此,在您的情况下,str
将包含整个字符串abc_1_2
,i
和j
包含垃圾值。
忽略_
你可以尝试这样的事情。
sscanf (sentence,"%[^_]_%d_%d",str,&i,&j);