21得票5回答
如果两个相似的字符串长度不同,strcmp会返回什么?

我了解如果您在strcmp(这是一个C问题)中有“cat”(string1)和“dog”(string2),那么strcmp的返回值将小于0(因为“cat”在字典顺序上小于“dog”)。但是,如果发生以下情况,我不确定strcmp会发生什么:string1: 'dog' string2: 'd...

21得票3回答
为什么strcmp比我的函数快那么多?

我编写了一个函数,Str::Compare,基本上是另一种方式重新编写的strcmp。 在比较这两个函数时,在循环中重复500'000'000次,strcmp执行得太快了,大约x750倍。 这段代码是在启用了-Os参数的C库中编译的:int Str::Compare(char* String...

19得票1回答
为什么在模板函数中使用strcmp()会返回不同的值?

我再次阅读《C++ Primer, 5th edition》。在关于模板的第16章中,有一个“非类型参数模板”的例子:template<unsigned N, unsigned M> int compare(const char (&p1)[N], const char (...

17得票9回答
我是否正确地认为strcmp对于字面值是等效的(且安全的)?

我们都知道溢出问题可能会引发的麻烦,这就是为什么strn*存在的原因,而且大多数情况下它们是有意义的。但是,我看到过一些代码使用strncmp来比较命令行参数,如下所示:if(... strncmp(argv[i], "--help", 6) == 0 现在,我认为这是不必要的,甚至可能是危险...

17得票3回答
strcmp有什么问题?

在对问题Reading In A String and comparing it C的回答中,有不止一个人反对使用strcmp(),并表示类似以下的话: 我也强烈建议你现在就开始习惯使用strncmp(),以避免今后出现许多问题。 或者(在Why does my string comp...

15得票4回答
为什么clang不认识strcmp函数?

我有一个基本程序,用于比较两个字符串:#include <string> #include <iostream> using namespace std; int main (int argc, char *argv[]) { if(strcmp (argv[0...

15得票8回答
有没有安全的strcmp函数?

我写了一个类似这样的函数:bool IsSameString(char* p1, char* p2) { return 0 == strcmp(p1, p2); } 问题在于有时候会不小心传递非字符串参数(这意味着p1或p2没有以null字符结尾)。然后,strcmp继续比较直到达...

15得票4回答
高效的字符串排序算法

通过比较(例如标准的QuickSort + strcmp函数)对字符串进行排序可能会有些慢,特别是对于共享公共前缀的长字符串(比较函数需要O(s)时间,其中s是字符串长度),因此标准解决方案的复杂度为O(s * nlog n)。是否有已知的更快算法?

14得票3回答
strcmp行为

当我运行以下代码时:#include <stdio.h> int main(int argc, char *argv[]) { int p = 0; p = strcmp(NULL,"foo"); return 0; } 我收到段错误。echo $? ...

13得票6回答
在C语言中,strcmp()函数返回什么?

我用C语言写了这段代码:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int main() { char string1[20]...