c语言 通过sscanf运用正则表达式,字符串中的 13 提取为数字,1234132423412 提取为字符串"QIRD: 13\r\n1234132423412";
时间: 2024-02-03 21:11:39 浏览: 87
在C语言中,`sscanf()`函数不支持正则表达式。不过,我们可以使用`strstr()`函数来查找子字符串,并使用`sscanf()`函数来提取数字。下面是一个示例代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "QIRD: 13\r\n1234132423412";
char *ptr = strstr(str, "13");
if (ptr != NULL) {
int num;
sscanf(ptr, "%d", &num);
printf("数字为:%d\n", num);
printf("原字符串为:%s\n", str);
}
return 0;
}
```
运行结果如下:
```
数字为:13
原字符串为:QIRD: 13
1234132423412
```
注意到上面的代码只能提取数字13,并不能提取整个字符串"QIRD: 13\r\n1234132423412"。如果要提取整个字符串,可以使用`strcpy()`函数和`strcat()`函数来实现,代码如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "QIRD: 13\r\n1234132423412";
char *ptr = strstr(str, "13");
if (ptr != NULL) {
char res[100];
strcpy(res, "QIRD: ");
strcat(res, ptr);
printf("提取结果为:%s\n", res);
printf("原字符串为:%s\n", str);
}
return 0;
}
```
运行结果如下:
```
提取结果为:QIRD: 13
1234132423412
原字符串为:QIRD: 13
1234132423412
```
阅读全文