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';
}

数字の一方または両方が複数桁の場合を除いて、これは正常に機能します。長さに関係なく、これを変更して、1行に両方の数値(常に2つあり、それだけです)を読み取るにはどうすればよいですか?

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 に答える