strcmp 相关问题

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

将字符串作为指针或文字传递时,strcmp() 返回值不一致

当我注意到这一点时,我正在玩 strcmp,这是代码: #包括 #包括 int main(){ //直接传递字符串 printf("%d ", strcmp("一个...

回答 3 投票 0

为什么我不能直接在C中的字符串上使用strtok,为什么我需要先复制它?

我不明白为什么不能直接strtok(argv[1], ";") (如果 argv[1] 确实是来自终端的输入,而 argv[1] 实际上是堆上的列表,会有区别吗?) ch...

回答 1 投票 0

带有指针的 strcmp 在 C 中不起作用

为什么此代码不起作用。只是想检查用户输入的内容是否与密码相同 字符*通过; printf("写入密码:"); scanf("%s", 通过); // 因为是一个指针,所以 & 是 o...

回答 7 投票 0

在c中与字符串作斗争 - 问题将是空终止符

我不明白我的代码中如何存在未初始化的变量访问和堆栈缓冲区溢出,即使调试时两个字符串相同。当我向 str2 添加一个空终止符时,它...

回答 1 投票 0

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

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