2
我正在寻找一些函数来验证,如果给定的字符串是一个有效的ipv4地址, 但inet_aton()似乎很喜欢字符串像“11”和“1.1”
验证ipv4字符串的最佳方法是什么。inet_aton()返回无效IP地址的成功?
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
struct in_addr addr;
if (argc != 2) {
fprintf(stderr, "%s <dotted-address>\n", argv[0]);
exit(EXIT_FAILURE);
}
if (inet_aton(argv[1], &addr) == 0) {
fprintf(stderr, "Invalid address\n");
exit(EXIT_FAILURE);
}
printf("%s\n", inet_ntoa(addr));
exit(EXIT_SUCCESS);
}
的输出中的一些无效的字符串
[[email protected] ~]# ./a.out 1.1
1.0.0.1
[[email protected] ~]# ./a.out "1 some junk"
0.0.0.1
[[email protected] ~]# ./a.out "10 some junk"
0.0.0.10
我想一个程序来不拒绝任何字符串点分十进制格式 XXXX,X从0到255
你可以检查这个帖子来验证一个ipv4字符串。 http://stackoverflow.com/questions/791982/determine-if-a-string-is-a-valid-ip-address-in-c – 2013-05-01 21:58:47
'1.1'是一个有效的IP4地址,意思是1.0 .0.1' – deepmax 2013-05-01 22:02:51
inet_aton的行为与其联机帮助页中所述的行为http://linux.die.net/man/3/inet_aton – jman 2013-05-01 22:04:45