トップページprog
12コメント3KB

CSV形式の読み込み

■ このスレッドは過去ログ倉庫に格納されています
0001X68ユーザNGNG
CSV形式で保存されているファイル

<file.c>
数値の文字列(a),数値の文字列(b)
数値の文字列(a),数値の文字列(b)



を配列array[a]=bと代入していく生Cのコードを
教えて頂けませんか?
0002名無しさんNGNG
エラー処理をまったく考えないのならば
fgets()で読んでstrtok()で切り分けてatoi()する、っていうのが一番お手軽っす。

数値の文字列(a)って例えば
hogehoge(123)
って事ですか?
0003名無しさんNGNG
私は sscanf 使っちゃうかも。
0004名無しさんNGNG
では間を取ってfscanf。もちろんエラー系は無し、という場合ね。
...っていうより結構そういうのってスクリプト系で処理するのが正しい気が。
0005某ランドNGNG

これくらいやってもまだ足りぬのがエラー処理

#include <stdio.h>
int func(FILE *fp@`int *a@`int *b)
{
  char buf[128];
  char del1@`del2;
  int siz;
    if(feof(fp) ) return -1;
     clearerr(fp);
     if(fgets(buf@`(sizeof buf)-2@`fp)==NULL)
     return -2;
   
    del1=del2=0;
    siz=sscanf(buf@`"%d%c%d%c"@`a@`&del1@`b@`&del2);
    if( del1!='@`' ) return 0;
    if(feof(fp) ) { if( siz!=3 ) return 0; }
       else  {  if( siz!=4 ) return 0;
          if( del2!='\n' ) return 0;
          }
  return 1;
}

呼出しは、
 FILE *fp=fopen( なんとか );
 switch(func(fp@`&a@`&b))
 {
  case 1:array[a]=b;break;
  case 0: 行が正常なCSVで無かった
  case -1: EOF
  case -2: エラー
 }
0006X68ユーザNGNG
皆さん、御返答有り難う御座います。
エラー処理まで考慮されたコードを教えて頂き感謝!です。
某ランドさんのコードではa,bに数値が格納されたとして
for文でarray[a]=bと代入していくわけですね。
00072さんへNGNG
hogehoge()って書かれていますが、もしかして
@niftyのFWINDCでアクティブな某さんですか?
0008>7NGNG
hogeとかfooとかよく使わない・・・?
俺の周りだけ?
0009>8NGNG
hogehogeって foobarの日本語訳(?)だと 先輩に聞いた。
真偽の程はしらない。
0010名無しさんNGNG
hoge ときたら次ぎは fuga だろって思ってるのは私だけ?
0011まじめなはなしNGNG
atatatatatatatataってのは不思議と見ないよな。
ほとんどの20代は知ってるだろうに・・・
0012名無しさんNGNG
>hogehogeって foobarの日本語訳(?)だと 先輩に聞いた。

訳じゃないけど、同じ用途に使われます。
(強い)意味を持たない短めの単語。かつ打ちやすい。って
ところですね。あと会話に混ぜても意味を間違われない
ことも必須。

atatatata は、タイプ/発音しづらいよね。


■ このスレッドは過去ログ倉庫に格納されています