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  

それを読んで変数に格納したい。(各行は単一の変数になります)。

私はこのコードを持っていますが、一度に1行ずつ文字列として読み取ります。

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行をスペースで区切って1行に入れることができますが、その場合、複数の単語の文字列をスキャンすることはできません.

それで、どうすればいいですか?

4

2 に答える 2

3

カウンターを使用して、4 つのラインのどれにいるのかを判断します。

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