gpt4 book ai didi

c - 我找不到这个段错误

转载 作者:行者123 更新时间:2023-12-01 12:02:17 25 4
gpt4 key购买 nike

所以我正在做 this codewars kata,我在每一次测试中都取得了成功,但最终结果失败了,因为我的代码有一个段错误,而且我认为我对这种语言的了解还不足以找到它!有人可以停下来吗?

int is_valid_ip(const char *addr) 
{
char set[] = "1234567890";
int current;
int octet_counter = 0;
char *octet = 0;
octet = strtok(addr, ".");
while (octet)
{
if (strspn(octet, set) != strlen(octet)) return 0; // checks for spaces
if (strlen(octet) > 1 && (octet[0]) == '0') return 0; // checks for preceding zeros
sscanf(octet, "%d", &current);
if (current < 0 || current > 255) return 0; // checks for range
octet = strtok(0, ".");
++octet_counter;
}
if (octet_counter == 4) return 1; // checks for number of octets
return 0;
};

我的代码有点简洁,但经过这么多次尝试解决这个问题后,它变成了这个......

最佳答案

由于 strtok() 修改要标记化的字符串,并且 addr 被定义为 const char * (我假设这是一个要求)您可以复制输入字符串 *addr:

char ip[16]; // enought to hold nnn.nnn.nnn.nnn
if(strlen(addr)>15) return 0;
strcpy(ip, addr);

随后对ip而不是addr进行操作


或者...避免使用 strtok 并在不修改的情况下解析/扫描字符串。

关于c - 我找不到这个段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60726077/

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