strcmp 相关问题

strcmp是一个字符串比较函数,可用于C,C ++,PHP,Python和MATLAB等语言。

C 中的用户输入比较,用户输入数组中出现意外符号

我尝试使用 gets() 和 strcmp 来将用户输入字符串与函数内部的示例进行比较。 我试过这段代码: #包括 #包括 int main() { ...

回答 1 投票 0

是什么导致 strcmp 返回 0、1 或 -1 以外的值?

我有这段代码。当我运行它时,它返回 13、-13 和 0。 如果str1大于str2,不是应该返回1,如果str1小于str2,不是应该返回-1吗? 我得到 13、-13 和 0。 #包括<

回答 2 投票 0

是什么导致 strcmp 返回 -13 或 13,而不是 1 和 -1?

我有这段代码。当我运行它时,它返回 13、-13 和 0。 如果str1大于str2,不是应该返回1,如果str1小于str2,不是应该返回-1吗? 我得到 13、-13 和 0。 #包括<

回答 2 投票 0

strcmp 不返回 1 和 -1

我有这段代码。当我运行它时,它返回 13、-13 和 0。 如果str1大于str2,不是应该返回1,如果str1小于str2,不是应该返回-1吗? 我得到 13、-13 和 0 #包括<

回答 1 投票 0

C 和 strcmp() 函数 [已关闭]

这个程序的重点是重命名当前目录中所有文件的文件扩展名。 这是一些代码: while ((dir = readdir(d)) != NULL) { 字符 * 扩展 =

回答 2 投票 0

C - 比较数字字符串

出于专业的好奇心,在 C 中比较两个全数字字符串的最安全/最快/最有效的方法是什么? #包括 #包括 #包括 出于专业好奇心,在 C 中比较两个全数字字符串的最安全/最快/最有效的方法是什么? #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void){ char str1[5] = "123"; char str2[5] = "123"; char *ptr; if(atoi(str1) == atoi(str2)) printf("Equal strings"); if(strtol(str1,&ptr,10) == strtol(str2,&ptr,10)) printf("Equal strings"); if(strcmp(str1,str2)==0) printf("Equal strings"); return 0; } 在我看来,strcmp (),因为它不需要任何数字转换。但在这种情况下,您需要确保其中一个存储仅包含数字字符的字符串。 你也可以在绳子上做memcmp () 编辑1 正如其他人关于前导零所指出的那样,您可以手动扫描前导零并通过将指针传递给第一个非零数字来调用 strcmp () 或 memcmp ()。 编辑2 下面的代码告诉了我想说的。这仅适用于整数,不适用于浮点数。 int main (void) { char s1[128], s2[128]; char *p1 = s1, *p2 = s2; /* populate s1, s2 */ while (*p1 && (*p1 == '0')) p1++; while (*p2 && (*p2 == '0')) p2++; if (strcmp (p1, p2) == 0) printf ("\nEqual"); else printf ("\nNot equal"); printf ("\n"); return 0; } 对于浮点数,应手动去掉小数点后面的零。 或者手动完成所有工作。 编辑4 我还希望您看看这段浮点代码。这将检测小数点之前的前导零和小数点之后的尾随零。例如 对于以下代码00000000000001.10000000000000和1.1将是Equal int main (void) { char s1[128], s2[128]; char *p1, *p2, *p1b, *p2b; printf ("\nEnter 1: "); scanf ("%s", s1); printf ("\nEnter 2: "); scanf ("%s", s2); p1 = s1; p2 = s2; /* used for counting backwards to trim trailing zeros * in case of floating point */ p1b = s1 + strlen (s1) - 1; p2b = s2 + strlen (s2) - 1; /* Eliminate Leading Zeros */ while (*p1 && (*p1 == '0')) p1++; while (*p2 && (*p2 == '0')) p2++; /* Match upto decimal point */ while (((*p1 && *p2) && ((*p1 != '.') && (*p2 != '.'))) && (*p1 == *p2)) { p1++; p2++; } /* if a decimal point was found, then eliminate trailing zeros */ if ((*p1 == '.') && (*p2 == '.')) { /* Eliminate trailing zeros (from back) */ while (*p1b == '0') p1b--; while (*p2b == '0') p2b--; /* match string forward, only upto the remaining portion after * discarding of the trailing zero after decimal */ while (((p1 != p1b) && (p2 != p2b)) && (*p1 == *p2)) { p1++; p2++; } } /* First condition on the LHS of || will be true for decimal portion * for float the RHS will be . If not equal then none will be equal */ if (((*p1 == '\0') && (*p2 == '\0')) || ((p1 == p1b) && (p2 == p2b))) printf ("\nEqual"); else printf ("\nNot equal"); printf ("\n"); return 0; } 使用前需要进行一些测试。 str(n)cmp是最快最安全的。 假设您正在寻找相同的,strncmp将是最快和最安全的,因为它可以进行直接比较而无需任何转换。人们普遍认为它比strcmp更安全。 但是,如果您希望 00 和 0 相等,或者以其他方式稍微不同地表示相同数字,则需要使用 atoi。 在我看来,“最安全”的方法可能是将两个参数都转换为整数然后进行测试,这样您就可以避免潜在的前导零问题。但这可能不是最快或最有效的方法。 您可以简单地使用以下内容: 如果(strcmp(“123”,“123”)== 0) { printf("The strings are equal"); } 否则 { printf("The strings are not equal."); } 我认为它应该有效。 我建议对整数采用这种方式: int strcmp_for_integers(char *aa, char *bb){ char aa2[11] = ""; char bb2[11] = ""; int answer; sprintf(aa2, "%010d", atoi(aa)); sprintf(bb2, "%010d", atoi(bb)); answer = strcmp(aa2, bb2); return answer; }

回答 6 投票 0

将 fgets() 与 strcmp() 一起使用 strcmp 不能正确比较 - C 编程

我当前的任务是编写一个函数,该函数给定一个 FILE 指针和一个指向字符串的指针。该函数应分析该字符串在给定文件中出现的次数,并将该值返回为 ...

回答 1 投票 0

我的字符串比较函数返回 false,即使字符串位于数组中

对于以下代码,当我搜索高帽时,我没有得到所需的结果(即找到) 相反,找不到输出。 我认为这与 char 数组在

回答 1 投票 0

如何提高 strcmp mysql 比较相似字符串的性能

我希望这不是一个欺骗性的问题。我环顾四周,找不到任何像我这样的问题,但是...... 我有一个包含人员数据的表,我们知道其中存在重复项。该表包含...

回答 1 投票 0

如何在 C 中的 for 循环内将“字符串用户输入”与“数组中的字符串列表”进行比较

我是 C 编程语言新手,正在尝试一些实践。 我想使用 for 循环将用户输入的字符串与数组中的字符串列表进行比较。我的代码看起来像这样:- #包括...

回答 1 投票 0

如何比较两个字符串大小写和不区分变音符号?

我有两根弦 字符串 1:“塞巴斯蒂安” 字符串 2:“塞巴斯蒂安” 我想通过忽略 é(重音)字符来比较这两个字符串。谁能知道这个逻辑吗? 预先感谢

回答 5 投票 0

如何使用Matlab比较文本框中的字符串

我想比较石头剪刀布游戏文本框中的字符串。比较后,将结果显示在另一个文本框中。但它无法比较。有人可以帮帮我吗? 如果 strcmp(...

回答 2 投票 0

努力结束比较字符串的循环

我正在尝试创建一个 C 程序,将字符串输入与 3 个有效字符串进行比较,如果输入与任何字符串都不相同,那么它将重新循环。然而我什至无法使循环闭合

回答 1 投票 0

如何按字母顺序对多个“人员”字符串进行排序,而不让他们移动到不同的“座位”?

我正在用 C 语言编写一个座位预订程序,其中涉及一个选项,其中分配给座位的乘客可以按字母顺序排序。当我选择对它们进行排序的选项时,

回答 1 投票 0

为什么 strcmp() 不比较 chararray 和 char?

我正在 PicoC 中编写一个小脚本来获取 Loxone Miniserver Go 的公共 IP 地址。所以我总是知道我的公共IP。我的计划是获取 IP,将其分成 4 部分并设置整数...

回答 1 投票 0

如何在NASM中实现strncmp

我正在尝试在asm中实现我自己的strncmp。这是 NASM 代码: 节.文本 全局 my_strncmp 我的_strncmp: mov rcx, 0;使用类似 rcx 的计数器 。下一个: cmp rdx, rcx ;我想这个

回答 1 投票 0

如何比较两个字符串中可以有空字符?

我想比较两个字符串 s1 和 s2,两个字符串之间可以有空字符。 我想要区分大小写和不敏感的比较,如 strcmp 和 strcasecmp。 假设我的字符串是: ...

回答 2 投票 0

比较两个字符串之间可以有空字符

我想比较两个字符串 s1 和 s2,两个字符串之间可以有空字符。 我想要区分大小写和不敏感的比较,如 strcmp 和 strcasecmp。 假设我的字符串是: ...

回答 1 投票 0

在 C 语言中,strcmp() 在应该返回 0 时却没有返回 0

我正在比较用户输入的用户名和密码。正在比较的字符串是从文件中读取的。无论出于何种原因,它都会适当地比较用户名,但不是......

回答 1 投票 0

strcmpi 重命名为_strcmpi?

在MSVC++中,有一个函数strcmpi用于不区分大小写的C字符串比较。 当你尝试使用它时,它会发生, 从 Visual C++ 2005 开始,此 POSIX 函数已弃用。请使用 ISO C++

回答 5 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.