怎么用c语言提取出如下字符串中hello*/select * from ,直接偏移得出*/右边的完整的字符串,结合strtok,strstr的用法
时间: 2023-11-27 21:05:58 浏览: 172
可以使用C语言中的strstr函数和strtok函数来提取出该字符串中的子串。
具体方法如下:
1. 使用C语言中的strstr函数在字符串中查找 "*/" 的位置,返回其指针。
2. 使用C语言中的strtok函数以查找到的 "*/" 位置做为分隔符,将字符串分割成两部分。
3. 使用C语言中的strtok函数以空格作为分隔符,提取分割后第二部分中的子串。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello*/select * from";
char *ptr1 = strstr(str, "*/"); // 查找 "*/" 的位置
char subStr[100];
strncpy(subStr, ptr1 + 2, sizeof(subStr)); // 复制子串到新的字符数组中
char *ptr2 = strtok(subStr, " "); // 以空格作为分隔符提取子串中的第一个单词
printf("%s\n", ptr2); // 输出子串中的第一个单词
return 0;
}
```
输出结果为:
```
select
```
注意,以上代码只提取了子串中的第一个单词。如果要提取整个子串,请使用以下代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello*/select * from";
char *ptr1 = strstr(str, "*/"); // 查找 "*/" 的位置
char subStr[100];
strncpy(subStr, ptr1 + 2, sizeof(subStr)); // 复制子串到新的字符数组中
char *ptr2 = strtok(subStr, ""); // 以空字符串作为分隔符提取整个子串
printf("%s\n", ptr2); // 输出整个子串
return 0;
}
```
输出结果为:
```
select * from
```
阅读全文