为什么我的 strcmp() 失败了?
Why is my strcmp() failing?
我是 C 新手,正在学习字符串标记化。我试图通过以下方式比较两个字符串。但是我正在做的字符串比较失败了。
你能告诉我我在这里遗漏了什么吗?
我找不到另一个类似的问题,可能是因为我对 C 语言没有经验。如果有的话,你能给我重定向一下吗?
char* input = "comparer here";
char* args[5];
int counter = 0;
char *tok = strtok(input, " ");
while (tok != NULL) {
args[counter] = tok;
counter ++;
if (counter == 5)
break;
tok = strtok(NULL, " ");
}
char* comp_str = "comparer";
if (strcmp(args[0], comp_str) == 1) {
// do some stuff
}
您正在定义一个名为 input 的字符串,但使用了一个名为 message 的变量,未定义。
它失败了,因为 strcmp
(及其兄弟姐妹)returns 如果它们相等则为零值,如果第一个小于第二个则为负值,如果第一个则为正值大于第二个。
未指定负值或正值。在大多数实现中,它是第一个不同字符的区别。但这并不能保证。
将结果与 1 比较不太可能成功。
strcmp() returns 当要比较的两个字符串相等时为0。如果您要检查两个字符串是否相等,则应将 1 更改为 0。
我是 C 新手,正在学习字符串标记化。我试图通过以下方式比较两个字符串。但是我正在做的字符串比较失败了。
你能告诉我我在这里遗漏了什么吗?
我找不到另一个类似的问题,可能是因为我对 C 语言没有经验。如果有的话,你能给我重定向一下吗?
char* input = "comparer here";
char* args[5];
int counter = 0;
char *tok = strtok(input, " ");
while (tok != NULL) {
args[counter] = tok;
counter ++;
if (counter == 5)
break;
tok = strtok(NULL, " ");
}
char* comp_str = "comparer";
if (strcmp(args[0], comp_str) == 1) {
// do some stuff
}
您正在定义一个名为 input 的字符串,但使用了一个名为 message 的变量,未定义。
它失败了,因为 strcmp
(及其兄弟姐妹)returns 如果它们相等则为零值,如果第一个小于第二个则为负值,如果第一个则为正值大于第二个。
未指定负值或正值。在大多数实现中,它是第一个不同字符的区别。但这并不能保证。
将结果与 1 比较不太可能成功。
strcmp() returns 当要比较的两个字符串相等时为0。如果您要检查两个字符串是否相等,则应将 1 更改为 0。