1

我需要从文件中读取单独的数字,然后在代码中使用它们。

例如,文件会说类似

2 5
8 9
22 4
1 12

现在我有:

while(fgets(line, MAX_LEN, in) != NULL)  
{
    ListRef test = newList();
    token = strtok(line, " \n");
    int x = token[0] - '0';
    int y = token[2] - '0';
}

哪个工作正常,除非一个或两个数字是多位数字。无论它们的长度如何,我如何将其更改为在一行中读取两个数字(总会有两个,仅此而已)?

4

2 回答 2

1
while (fgets(line, sizeof(line), in) != NULL)  
{
    int x, y;
    if (sscanf(line, "%d %d", &x, &y) != 2)
        ...report format error...
    ...use x and y as appropriate...
}
于 2012-11-19T04:54:02.883 回答
0

给定一行数字line(如在while循环中),您可以这样做:

char *p;
p = strtok(line, " \n");
while (p != NULL) {
    sscanf(p, "%d", &num);
    /* do something with your num */
    p = strtok(NULL, " \n");
}

但请注意,这strtok可能存在线程安全问题。请参阅strtok 函数线程安全

如果您只想阅读所有数字,无论行数如何,只需使用fscanf

while (fscanf(in, "%d", &num) == 1) {
    /* do something with your num */
}
于 2012-11-19T04:50:18.383 回答