我需要比较包含字母和数字的字符串,只比较字母和数字的出现次序。例如字符串
"first%dsecond%dj"
应当与任何形如"first[number]second[number]j"
的字符串视为相等。我尝试了以下方法:char *c_i
int i, j;
if (sscanf(c_i, "first%dsecond%dj", &i, &j) == 2 &&
c_i[strlen(in) - 2] == 'j') {
printf("%s", c_i);
}
但是sscanf会忽略最后一个数字后面的所有内容,所以像"first%dsecond%dthird%dj"
这样的字符串也会给出正确的值并打印出来。
通常情况下,sscanf
只关心最后一个指定符号之前的字母的值,我想找到一种方法来计算指定符号之后的字母的值,比如说一个比较器,它检查整个字符串并获取任何数字但不包括数字。
当然,我可以通过创建自己的char*
扫描器来实现这一点,但如果有更简单的方法,我希望避免这样做。