CSVファイル:数値や文字列が『,』(カンマ)で区切られているファイルです。
これ、実は数値についてはfscanfの普通の使い方でいけます。
ただ、文字列については問題が起きます。

読み込むファイルがこうだとします。
sample.csv
ID1,1,11,1.02,1.12
ID2,2,21,2.20,2.12
ID3,3,31,3.02,3.21
コードはこういうふうになります。
    #include <stdio.h>

    int main(void)
    {
      FILE *fp;
      char *filename = "sample.csv";
      char s[100];
      int ret, n1, n2;
      float f1, f2;

      fp = fopen( filename, "r" );
      if( fp == NULL ){
        printf( "%sファイルが開けません¥n", filename );
        return -1;
      }

      while( ( ret = fscanf( fp, "%[^,],%d,%d,%f,%f", s, &n1, &n2, &f1, &f2 ) ) != EOF ){
        printf( "%s %d %d %f %f", s, n1, n2, f1, f2 );
      }

      fclose( fp );
      return 0;
    }

この出力は、こうなります。
ID1 1 11 1.020000 1.120000
ID2 2 21 2.200000 2.120000
ID3 3 31 3.020000 3.210000

僕がずっと疑問なのが、While文の中で
printf( "%s %d %d %f %f", s, n1, n2, f1, f2 );
の部分で改行の\nをいれていないのに改行されていることです。
めちゃくちゃ不思議です。