【发布时间】:2014-12-04 21:02:04
【问题描述】:
大家好,我的服务器客户端项目有问题。我使用命令./server www.google.com 运行我的代理服务器,所以我有argv[1]=www.google.com。在此之后,我运行我的客户端并将值GET www.google.com 发送到服务器。现在从服务器端我使用strtok_r(buffer," ",&string1),所以我有buffer=GET 和string1=www.google.com(我确定这些值是因为我打印它们)。问题是当我使用
if((strcmp(string1,argv[1]) == 0))
{
printf(" SAME VALUES \n");
}
我没有得到 printf,所以这两个变量没有相同的值。有什么想法吗?
【问题讨论】:
-
检查原始数据(使用十六进制打印、调试器等)。可能还有一些前导/尾随空格或换行符。
-
最有可能 string1 在末尾有空格。考虑修剪它,或者编写一个也停止在换行符处的自定义比较函数。
-
按字节打印 string1 和 argv[1] 的值并检查差异
-
显示一些重现问题的代码。
-
在比较前添加
printf("string1 = [[%s]], arg 1 = [[%s]]\n", string1, argv[1]);。方括号用于分隔字符串。如果右方括号靠近行首,则怀疑字符串中有 CR'\r'字符。如果它们在下一行,则假定字符串中有 LF'\n'个字符。