ページ 11

特定行のテキストデータの読み込み

Posted: 2010年7月09日(金) 09:43
by mint
質問させてください。

次のようなテキストがあった場合に、例えば3行目(1 0 0)だけを読み取りprintfしたいと考えています。


1 0 1
1 1 1
1 0 0
0 1 1
・・・

テキストの読み込み方法として、while(fscanf(fp,%d %d %d",&a,&b,&c)!=EOF)
のような方法しか知らないのですが、これだと特定の行だけを指定できずに、全行が出力されてしまいます。

特定の行だけを出力する方法はありますか?
よろしくお願いします。

Re:特定行のテキストデータの読み込み

Posted: 2010年7月09日(金) 09:49
by シエル
fgetsで読み込みたい直前の行まで読んで、読み込みたい行にきたら、fscanfを使う。
実用的ではないでしょうが。。

Re:特定行のテキストデータの読み込み

Posted: 2010年7月09日(金) 10:05
by バグ
こんな感じ?
#include <stdio.h>

#define STRING_LENGTH_MAX    4096
#define SHOW_LINE            1

int main(void)
{
    int cnt = 0;
    char str[STRING_LENGTH_MAX] = {'\0', };
    FILE* fp;

    if ((fp = fopen("test.txt", "r")) == NULL)
    {
        return -1;
    }

    for (; cnt < SHOW_LINE && fgets(str, STRING_LENGTH_MAX, fp) != NULL; ++cnt);

    if (cnt == SHOW_LINE)
    {
        printf("%s", str);
    }

    fclose(fp);
    return 0;
}

Re:特定行のテキストデータの読み込み

Posted: 2010年7月09日(金) 15:11
by mint
ありがとうございました!!!
できました!!!!