【发布时间】:2013-12-28 11:24:39
【问题描述】:
我将域名存储在 char 的二维数组中
char domainNames[2][4096]= {"www.yahoo.com","java.sun.com"};
并且我需要检查列表中是否存在存储在另一个数组(char data[4096];)中的给定域名,如果找到该域名,则将在char IP[2][4096]= {"87.248.122.122","192.9.162.55"};中找到的所有IP地址用“#”分隔数组char msg[4096];
我就是这样做的:
for (i=0; i< 2;i++)
{
if(strcmp(domainNames[i], data)==0)
{
strcat(msg, IP[i]);
strcat(msg, "#");
found = true;
}
}
if(!found)
strcpy(msg,"IP not found");
break;
}
问题是即使字符串确实存在,结果总是“找不到IP”。
【问题讨论】:
-
data怎么输入? -
您显示的代码包含三个
},只有两个{。break退出了哪个循环? -
示例不完整,错误消息未记录或显示,示例不工作无法编译,投票关闭
-
如果您从客户端读取数据,您确定数据中没有多余的字符,如空格或换行符。如果是这样,比较将失败。
-
@user3108337 在这里使用
strcmp没有任何问题。我的猜测是您的data末尾有\n。我想像printf("data=[%s]\n", data);这样的简单调试打印会让你看到问题(在正确的情况下,输出中的两个方括号必须在同一行并且没有空格)。
标签: c arrays string comparison multidimensional-array