-
这有点像在字典中排序...... A 前面有一个带有 b 的单词,例如 apple 前面有 basketball = =||
字符串在这里。
长度其实是一个字符逐个字符比较,如果大于1,则返回1,如果小于-1,因为这个函数是满足第一个不同的字符而返回的,你上面的aa、bbb第一个字符是不同的,所以在比较第一个字符后,会返回, 不管背后是什么......
这个功能在一般教科书中有解释。 我对这个功能感到非常困惑 - - 我以为这是一种浪费 = =
当我做一个需要我对一堆字符串进行排序的问题时...... 当它变成一本有序的词典时...... 我突然觉得这个功能是世界上最好的功能...... = =||
如果要比较一个字符串的长度,需要使用 strlen 函数,它返回字符串的字符数,也就是字符串的长度,可以尝试自己重载 strcmp 函数。 让它有你说的,或者自己设计一个功能...... strlen 函数也位于 strcmp 函数的头文件中。
原型是无符号的 int
strlen( const char *string );这是VC6的原型)。
但。。。 我只是在谈论 C 方法...... 因为我只学过C... 至于C++是否是更好的方法,我不知道,我不知道......
-
C C++语言比较字符串按照字典排序,即顺序比较按照ASCII码顺序从第一个字母开始,如果小则返回-1,如果大则返回1,同样为0。
如果要比较字符串的长度,可以使用 strlen(string) 来执行此操作。
有趣的是,如果字符串是:
1", "2", ."9", "10"...在本例中,排序结果为:"1", "10", "2", .
因为 10 的第一个字母是 1。
您可以在 Windows 中的文件列表中看到相同的内容。
-
strcmp 不比较字符串的长度,字符串的相等意味着两个字符串完全相同。 结果返回 0;
另一个例子是 AAA 与 BB。 首先比较第一个字符串中的第一个 A 和第二个字符串中的第一个 B。 比较是 ASCII 码的比较。
当然,B 比 A 大。 该函数返回 -1。 如果 ASCII 代码相同(即相同的字符),则将其进行比较(一个接一个)。
-
strcmp 比较的是字符串内容,而不是长度。
-
比较规则:字符串比较函数 strcmp 从左到右逐个字符(按 ASCII 值)比较两个字符串,直到遇到不同的字符或遇到'\0'直到。 基本形式为 strcmp(str1,str2),如果 str1=str2,则返回零; 如果 str1str2,则返回一个正数。
说明:C 库函数 int strcmp(const char *str1, const char *str2) 将 str1 指向的字符串与 str2 指向的字符串进行比较。
声明:int strcmp(const char *str1, const char *str2) 是 strcmp() 函数的声明。
参数:str1 -- 第一个要比较的字符串。 str2 – 要比较的第二个字符串。
-
从两个字符串的第一个字符开始,逐个字符比较它们具有以下可能性:
1)如果在任何字符串的末尾之前找到不同的字符,则较大字符所在的字符串最大。
2)前面的字符都是相等的,如果其中一个字符串先到达末尾,则尚未到达字符串末尾的字符串较大。
3)如果前面的字符都相等,并且两个字符串同时到达字符串的末尾,则两个字符串的大小相同(相等)。
-
当长度不同时,长度越大越大; 当长度相同时,比较从第一个字节开始,二进制值较大,同样比较下一个字节...
使用字符串就是使用它的第一个地址(有时和长度,实际上,拥有第一个地址就足够了),无论字符串有多长。 最明显的例子是,当一个(常量)字符串作为参数及其第一个地址传递时。 所以你的比较只是地址的比较。
您可以尝试输出,scanf 函数是从缓冲区读取的数据,第二个字符串的数据是空格或换行符制表符。 您可以单独读取它们,但在两者之间添加 fflush(stdin); 清除缓冲区。