【发布时间】:2017-05-16 11:18:06
【问题描述】:
我需要比较字符串,仅通过字母和 C 中数字的外观来比较字母和数字。
例如,字符串"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* 扫描器来做到这一点,但如果有更简单的方法,我想避免这种情况。
【问题讨论】:
标签: c string string-comparison scanf