gpt4 book ai didi

检查argv[1]是否是十六进制字符串

转载 作者:行者123 更新时间:2023-11-30 17:33:37 24 4
gpt4 key购买 nike

我有一个简单的程序,它将 IP 地址作为唯一的参数。 IP 地址可以采用两种格式:带点的十进制或十六进制。根据使用的情况,我需要执行不同的操作。

因此我需要检查参数是否为

1) IP in dotted decimal format
2) IP in hex format
3) other (illegal/malformed argument)

我怎样才能最好地检查这一点?我应该使用某种正则表达式吗?正确格式的十六进制地址必须包含 8 个十六进制字符,[0-9a-f]{8}。正确的十进制点分 IP 必须包含 4 个数字 [0-255] 和 3 个点。

最佳答案

您可以使用isxdigit(character)来自<ctype.h> ,它检查是否 character是否为十六进制数字。

<小时/>

更新:如果我的假设是正确的,并且“点”地址如下: (\d{1,3}\.){3}\d{1,3}十六进制地址为:[a-zA-Z0-9]{8} ,那么您正在寻找这样的东西:

#include <string.h>
#include <stdbool.h>

bool
isxip(const char *address)
{
for (int i=0; i<strlen(address); i++)
if (address[i] == '.')
return false;
return true;
}

关于检查argv[1]是否是十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23704211/

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