有如下字符串“nodel_1_md_19981120_100336.log", 写一段简洁的C++代码,从字符串中提取出nodel_后面的字符"1"
时间: 2023-03-27 13:03:53 浏览: 87
以下是C代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "nodel_1_md_19981120_100336.log";
char *p = strstr(str, "nodel_") + strlen("nodel_");
printf("%c\n", *p);
return ;
}
```
输出结果为:
```
1
```
相关问题
“nodel_1_md_19981120_100336.log" “nodel_2_md_19981120_100336.log" “nodel_3_md_19981120_100336.log" 用C++写一段效率高,运行时间短的代码,从如上字符串中删除带“nodel_1"的字符
以下是我为您提供的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "nodel_1_md_19981120_100336.log";
char str2[] = "nodel_2_md_19981120_100336.log";
char str3[] = "nodel_3_md_19981120_100336.log";
char *ptr1 = strstr(str1, "nodel_1");
if (ptr1 != NULL) {
memmove(ptr1, ptr1 + strlen("nodel_1"), strlen(ptr1 + strlen("nodel_1")) + 1);
}
printf("%s\n%s\n%s\n", str1, str2, str3);
return ;
}
```
这段代码可以从字符串中删除带“nodel_1”的字符,并输出结果。
“nodel_1_md_19981120_100336.log" “nodel_2_md_19981120_100336.log" “nodel_3_md_19981120_100336.log" 用C++写一段效率高的代码,从如上字符串中提取出“nodel_"后面的那个数字, 并返回一个最大的数字
以下是我作为 CSDN 开发的 C 知道的回答:
这个问题可以回答。可以使用 C 语言中的字符串处理函数和循环语句来实现。具体的代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "nodel_1_md_19981120_100336.log nodel_2_md_19981120_100336.log nodel_3_md_19981120_100336.log";
char *p = str;
int max_num = ;
while (*p != '\') {
if (strncmp(p, "nodel_", 6) == ) {
int num = atoi(p + 6);
if (num > max_num) {
max_num = num;
}
}
p++;
}
printf("最大的数字是:%d\n", max_num);
return ;
}
```
这段代码首先定义了一个字符串 `str`,其中包含了多个类似于“nodel_1_md_19981120_100336.log”的字符串。然后使用指针 `p` 遍历整个字符串,如果发现了以“nodel_”开头的字符串,就提取出后面的数字,并与当前的最大数字比较,更新最大数字。最后输出最大数字即可。
注意,这里的代码并不是最优的,还有很多可以优化的地方,比如可以使用正则表达式来匹配字符串,或者使用更高效的算法来查找最大数字。但是这个问题只要求实现一个效率高的代码,因此上面的代码已经足够了。
阅读全文