gpt4 book ai didi

c++ - 我的逻辑让我失望(C++、nslookup、字符比较)

转载 作者:行者123 更新时间:2023-11-28 00:43:01 25 4
gpt4 key购买 nike

我正在使用 C++ _popen 管道魔术循环浏览通过在 shell 中发出“nslookup [IP]”命令获得的响应。

如您所知(从终端尝试...Windows 命令提示符的输出可能与其他操作系统不同;我使用的是 Windows 7),nslookup 查询将返回如下内容:

C:\MyApps>nslookup 8.8.8.8
Server: dns.mydomain.com
Address: 192.168.200.15

Name: google-public-dns-a.google.com
Address: 8.8.8.8

这是我的代码(重要片段):

vector<string> IPAddresses;
// [...] some code to populate IP Addresses into that vector [...]

char buff[512];
for(int x=0;x<IPAddresses.size();x++)
{
cmd = "nslookup " + IPAddresses[x];
FILE *fpipe = _popen(cmd.c_str(),"r");
while(fgets(buff, sizeof(buff), fpipe)!=NULL)
{
//DEBUG CODE HERE
}
}

现在检查我的“DEBUG CODE”示例及其输出(注意“找不到 IP:不存在的域”错误在没有 DNS 记录时是正常的):

if(buff[0]=='N') cout<<buff;

输出:

Name:   computer1.mydomain.com
Name: computer2.mydomain.com
*** dns.mydomain.com can't find 192.168.200.55: Non-existent domain
Name: computer3.mydomain.com
*** dns.mydomain.com can't find 192.168.200.122: Non-existent domain

调试代码2:

if(buff[0]=='*') cout<<buff;

输出:

*** dns.mydomain.com can't find 192.168.200.55: Non-existent domain
*** dns.mydomain.com can't find 192.168.200.122: Non-existent domain

当我寻找 buff[0] 为 'N' 时,怎么会弹出不存在的域错误?事实上,它在两个调试示例中都出现了,所以我的程序认为 char 既是“N”又是“*”???

最佳答案

输出这两个字符串可能不是因为您的代码正在打印它,而是因为 nslookup 正在将它们写入 stderr,您的程序没有捕获(并且是因此与你的输出混合在一起)。

关于c++ - 我的逻辑让我失望(C++、nslookup、字符比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17838672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com