有没有办法让我用strlen获取字符串中的最后一个字符?如果没有,我无法理解strlen可以在什么情况下使用.
char buf[256] = "Hello";
char * lastchar = buf[strlen(buf) - 1];
Run Code Online (Sandbox Code Playgroud)
使用它安全吗?
如果您的字符串实际上是以空值终止的(否则它们实际上不是字符串!!!),是的,它是安全的,只要字符串中至少有一个字符(终止空值除外).
strlen()计算以null结尾的字符串中的字节数,不包括空终止符.请记住,C使用基于0的索引.
所以"Hello"真的'H', 'e', 'l', 'l', 'o', '\0',strlen("Hello")返回5,所以你正在访问buf[4](the 'o'),这很好.如果您有空字符串,""则没有倒数第二个字符,因此strlen()在使用之前检查返回值非常重要.
一个警告:如果你打算得到最后一个角色,你应该已经完成了
char lastchar = buf[strlen(buf) - 1];
Run Code Online (Sandbox Code Playgroud)
如果你想得到一个指向最后一个角色的指针,你应该已经完成了
char * lastchar = &buf[strlen(buf) - 1];
Run Code Online (Sandbox Code Playgroud)