gpt4 book ai didi

c - 为什么我的代码不能停止?使用 fscanf

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:05 25 4
gpt4 key购买 nike

我想继续读取文件直到它结束,但它输出错误答案并且无法停止。我的代码是:

    #include <stdio.h>
#include <stdlib.h>

void create() {
FILE *fin = fopen("in", "r");
int temp[4], t;
int aaa;

while ((aaa = scanf(fin, "%d:%d:%d:%d/%d",
&temp[0], &temp[1], &temp[2], &temp[3], t)) != EOF) {
printf("%d\n", aaa);
printf("%d:%d:%d:%d\n", temp[0], temp[1], temp[2], temp[3]);
}

fclose(fin);
}

int main() {
create();

return 0;
}

我的输入文件内容是:

103.29.43.0/24
103.29.5.0/24
103.29.52.0/22
103.29.56.0/22
103.29.60.0/22
103.2.96.0/22
103.29.64.0/24
103.29.65.0/24
103.29.66.0/24
103.29.67.0/24
103.29.7.0/24

但它输出:

0
103:0:0:0
0
103:0:0:0
0
103:0:0:0
....(loop)

最佳答案

  1. 您的 fscanf 应该有 . 而不是 :%d 之间,因为这会导致不匹配。
  2. 还使用 &t 代替 t。参见 man fscanf
  3. 还有 while(fscanf() != EOF) 意味着即使发生任何匹配失败并且 fscanf 无法匹配和存储所有 5 个参数(这是由于此处发生:. 不匹配)然后继续循环。
    只有当 fscanf 的所有 5 个参数都匹配并存储时,您才应该使用 while(fscanf() == 5) 继续循环。

关于c - 为什么我的代码不能停止?使用 fscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637263/

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