【发布时间】:2021-03-10 10:43:23
【问题描述】:
我有一个文本文件,每一行都有这样的布局:
66.249.66.146 - - [31/Jul/2011:12:06:57 +0100] "GET /issue-download/page/4/ HTTP/1.1" 200 3768 "-"
地点:
IP address - - <some extra stuff>
我正在尝试仅使用以下方式打印 IP 地址:
while (fgets(singleLine, 14, file) != NULL) {
if (strncmp(singleLine, "66.249.66", 9) == 0) {
printf("%s\n", singleLine);
}
}
当然,每行的前 13 个字符并不总是 IP 地址,如果 IP 地址类似于 66.249.66.5,它将打印为 66.249.66.5 -
我尝试了一个 fscanf 方法,所以:
char ip[14];
char extra[100];
fscanf(file, "%s - - %s", &ip, &extra);
while (fgets(singleLine, 14, file) != NULL) {
if (strncmp(singleLine, "66.249.66", 9) == 0) {
printf("%s\n", ip);
}
}
以及%d.%d.%d.%d 用 fscanf 来表示 IP,但这也不起作用。有人有什么想法吗?
【问题讨论】:
-
@user3121023 他们一开始都有一个IP地址
-
@user3121023 是的,它总是以数字开头
-
您的 fscanf 代码显示了对计算机工作方式的根本误解。您是否知道计算机按照代码告诉它们的顺序一次做一件事?