__buildin_strrchr 和 库strrchr
时间: 2024-06-04 21:06:39 浏览: 12
__buildin_strrchr是GCC编译器内置函数,用于在字符串中查找最后一个指定字符的位置。而库函数strrchr也是用于查找最后一个指定字符的位置,但它是C标准库中提供的函数,需要在使用前引入头文件。
两者的区别在于实现方式和使用方式不同。__buildin_strrchr是编译器内置的函数,不需要引入头文件,直接调用即可;而库函数strrchr需要引入头文件<string.h>,并且需要链接对应的库文件。
此外,__buildin_strrchr的执行效率可能会更高一些,因为它是编译器内置的函数,编译器可以对其进行一些优化。但是它不是标准库函数,因此不具备可移植性。而库函数strrchr是标准库函数,可以在不同的平台和编译器中使用。
相关问题
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\')+1 : __FILE__)
在C++中,`#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)` 是一种常见的宏定义,用于获取当前文件的文件名。如果文件路径中包含斜杠(/),则返回斜杠后面的部分作为文件名;否则,返回整个文件路径。
另外,为了解决分支测不到的问题,并避免返回一个空指针,可以使用以下代码作为更好的方案:
```cpp
#define __FILENAME__ (strrchr("/" __FILE__, '/') + 1)
```
这个宏定义在文件路径前添加了一个斜杠,以确保`strrchr`函数能够找到最后一个斜杠并返回斜杠后面的部分作为文件名。
所以,如果你想在C++中获取当前文件的文件名,可以使用以下宏定义:
```cpp
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\')+1 : __FILE__)
```
c语言strstr和strrchr
函数有什么区别?
strchr()和strstr()都是C语言中的字符串处理函数,它们的区别在于查找的对象不同。strchr()函数用于在一个字符串中查找给定字符的第一个匹配,而strstr()函数用于在字符串中查找指定字符串的第一次出现。具体来说,strchr()是查找字符,而strstr()查找字符串。另外,strrchr()函数与strchr()函数类似,但是它是从字符串的末尾开始查找字符。
下面是一个示例代码,演示了strchr()和strstr()函数的用法:
```c
#include <stdio.h>
#include <string.h>
int main() {
const char str[] = "Hello world!";
const char ch = 'w';
const char sub[10] = "wor";
char *ret;
// 使用strchr()函数查找字符
ret = strchr(str, ch);
printf("strchr() %c is %s\n", ch, ret);
// 使用strstr()函数查找字符串
ret = strstr(str, sub);
printf("strstr() %s is %s\n", sub, ret);
return 0;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)