如果我有:
str1 = "str1s2"
str2 = "djfs1d2.3"
如何通过 sscanf() 获取字符串中的最后一个数字?
我试过:
sscanf(str1, "%*[^0-9]%d", &n1);
sscanf(str2, "%*[^0-9]%d", &n2);
但我只得到第一个数字:
n1 = 1
n2 = 1
最佳答案
使用 %n
说明符存储扫描处理的字符数,您可以遍历字符串直到 scanf 失败。
#include <stdio.h>
int main ( ) {
char str2[] = "2to3";
int span = 0;
int index = 0;
int lastvalue = 0;
int value = 0;
if ( 1 == sscanf ( &str2[index], "%d%n", &value, &span)) {
index += span;
lastvalue = value;
}
while ( 1 == sscanf ( &str2[index], "%*[^0-9]%d%n", &value, &span)) {
index += span;
lastvalue = value;
}
printf ( "last value = %d\n", lastvalue);
return 0;
}
关于c - 如何通过 sscanf() 获取字符串中的最后一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44088896/