gpt4 book ai didi

c - 使用 scanf() 提取存储在字符串中的 URL 的域名扩展

转载 作者:行者123 更新时间:2023-11-30 14:50:29 25 4
gpt4 key购买 nike

我正在编写一个代码,它将 URL 地址作为字符串文字作为输入,然后通过数组运行 URL 的域扩展,并在找到匹配项时返回索引,如果找到匹配项,则返回索引,-1没有。

例如,输入为 www.stackoverflow.com,在这种情况下,我只需提取 com 部分。如果是 www.google.com.tr,我只需要再次使用 com,忽略 .tr 部分。

我可以想到基本上编写一个可以很好地完成此操作的函数,但我想知道是否可以使用 scanf() 本身来完成此操作?

最佳答案

这里使用scanf确实是一个开销。但你可以这样做来实现类似的东西

char a[MAXLEN],b[MAXLEN],c[MAXLEN];
scanf("%[^.].%[^.].%[^. \n]",a,b,c);
printf("Desired part is = %s\n",c);

为了确保格式正确,您可以检查此 scanf 调用是否成功。例如:

if( 3 != scanf("%[^.].%[^.].%[^. \n]",a,b,c)){
fprintf(stderr,"Format must be atleast sth.something.sth\n");
exit(EXIT_FAILURE);
}

实现同样目标的其他方法是什么?使用 fgets 读取整行,然后使用带有分隔符 "."strtok 进行解析。这样你就会得到它的一部分。使用fgets,您可以轻松支持不同类型的规则。您可以使用 fgetsstrtok 来执行相同的操作,而不是将其合并到 scanf 中(这在错误情况下会有点困难)。

使用上面提供的解决方案,仅考虑 url 的前三个部分。其余不解析。但这并不是实际情况。大多数时候,我们必须处理整个信息,即 url 的所有部分(而且我们不知道可以有多少部分)。那么你最好使用上面提到的 fgets/strtok

关于c - 使用 scanf() 提取存储在字符串中的 URL 的域名扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967365/

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