C言語関係掲示板

過去ログ

No.1092 指定されたデータだけ抜き出す

[戻る] [ホームページ]
No.14357

指定されたデータだけ抜き出す
投稿者---ももちゃん(2004/06/01 11:11:50)


040201_0010, 0.17,5/5,OOOOO,12.37, -1.1, -2.8, 4.3738,$10O
040201_0015, 0.25,5/5,OOOOO,12.37, -0.3, -3.7, 4.6092,$10O
          ・
          ・
          ・
このようなデータがあるファイルに入っており「,」ごとに区切られています。この中から4番目のデータを取り出し新規ファイルにどんどん格納していきたいのですが、よくわからないのでアドバイスお願いします


No.14358

Re:指定されたデータだけ抜き出す
投稿者---かずま(2004/06/01 11:28:08)


> このようなデータがあるファイルに入っており「,」ごとに区切られています。
> この中から4番目のデータを取り出し新規ファイルにどんどん格納していき
> たいのですが、よくわからないのでアドバイスお願いします

「,」が連続することがない、すなわち空のデータがないのなら、
    char buf[256], data[256];

    while (fgets(buf, sizeof buf, stdin))
        if (sscanf(buf, "%*[^,],%*[^,],%*[^,],%255[^,\n]", data) == 1)
            fprintf(stdout, "%s\n", data);



No.14363

Re:指定されたデータだけ抜き出す
投稿者---ももちゃん(2004/06/01 13:19:12)


すいません。
空データのもありました。
その場合はどうすればよろしいでしょうか?


No.14368

Re:指定されたデータだけ抜き出す
投稿者---かずま(2004/06/01 17:18:18)


> 空データのもありました。
> その場合はどうすればよろしいでしょうか?
    char buf[256], *p;  int i;

    while (fgets(buf, sizeof buf, stdin)) {
        for (i = 0, p = buf; i < 3 && (p = strchr(p, ',')); i++)
            p++;
        if (p && (i = strcspn(p, ",\n")))
            fprintf(stdout, "%.*s\n", i, p);
    }

#include <string.h> をお忘れなく。