我写了代码,想要查看两个char *'strings'是否相等。我在代码中编写了打印语句,以帮助我调试它。
基本上,命令数组是:[a,b,null]
用户输入的cmd可以是任何东西,但是如果它是a,b或null,那么我们想进入if语句。
for (i = 0; i < 3; i++){
printf("cmd.name = : %s\nCommand = %s\n", cmd->name, commands[i]);
if (cmd->name == commands[i]){
printf("inside if\n");
valid = 1;
}
}
其打印输出:
cmd.name = : a
Command = a
cmd.name = : a
Command = b
cmd.name = : a
Command = (null)
因此,首先,a应该等于权利吗?为什么它不在if语句中?
最佳答案
由于您不能使用字符串库,因此必须实现自己的strcmp函数。
char *作为一种类型,仅是一个指针,即它存储一个地址。然后,简单的“ ==”将比较地址,这不是您想要的地址。
一个简单的strcmp函数可以是:
int myStrcmp(const char *str1, int size1, const char *str2, int size2)
{
int i = 0;
if(size1 != size2)
return -1 //different strings
for(i = 0; i < size1; i++)
{
if(str1[i] != str2[i])
return -1; //different strings
}
return 0; //same strings
}
这里的窍门是,您必须以某种方式知道什么是字符串大小。如果您不能使用字符串库,我想您也不能使用strlen()。
关于c - 在没有字符串库的情况下测试字符串是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28504354/