1

我有一个.txt文件:

A B C
England vs autralia
2004
100
D E F
japan vs argentina
3045
140
D E F
india vs pakistan
2012
150
J F G
south africa vs india
1967
100
K GHD D
australia vs pakistan
1993
453
Z E Q
pakistan vs england
2013
150  

我想阅读它并存储在变量中。(每行转到一个变量)。

我有这段代码,但它一次读取一行并作为字符串读取。

if ( file != NULL )
{
    i=1;
    char line [ 100 ]; /* line size */
    while ( fgets ( line, sizeof line, file ) != NULL ) /* read a line */
        {
            fputs ( line, stdout ); /* write the line */
            i++;
        }
    fclose ( file );
}  

其实我想一次读4行。但似乎不可能。因此,我可以将 4 行放在由空格分隔的单行中,但在这种情况下,将无法扫描多字字符串。

那么,我该怎么做呢?

4

2 回答 2

3

使用计数器确定您在四行中的哪一行:

#include <stdio.h>
#include <string.h>

void doit( FILE *file)
{
char line [ 100 ]; /* line size */
unsigned iii;
size_t len;

    for(iii=0;  fgets ( line, sizeof line, file); iii++ ) /* read a line */
        {
        len = strlen(line);
        while (len && line[len-1] == '\n') line[--len] = 0;
        switch (iii % 4) {
        case 0: /* handle first line here */
               break;
        case 1: /* handle second line here */
               break;
        case 2: /* handle third line here */
               break;
        case 3: /* handle fourth line here */
               break;
                }
        }
}
于 2013-10-27T12:42:07.397 回答
0

逐行阅读,由于格式似乎是固定的,您总是知道每一行都有哪些类型。

所以例如像这样的伪代码

while (continue_reading)
{
    // E.g. "A B C"
    get_line()
    parse_line_into_three_string()

    // E.g. "England vs autralia"
    get_line()
    parse_whole_line_as_a_single_string()

    // E.g. "2004"
    get_line()
    parse_line_as_a_number()

    // E.g. "100"
    get_line()
    parse_line_as_a_number()

    do_something_with_all_data()
}
于 2013-10-27T12:28:19.613 回答