Article View: fj.lang.c
Article #502Re: [Q]区切りなしデータを文字型でない配列に読むには?
From: shino
Date: Fri, 20 Mar 1998 00:00
Date: Fri, 20 Mar 1998 00:00
65 lines
2762 bytes
2762 bytes
しのです。
Tomoaki Chiba wrote in message <6esjd9$4t@sakunami.gw.tohoku.ac.jp>...
>
>千葉@東北大 と申します。
>
>Subjectが長いのはよろしくないと思って切ってしまいましたが、正確には
>
>[Q]長くて区切り文字のない文字列(数字列)を、ファイルから、行単位で
> (一行丸ごとという意味)、文字型でない配列に、可能な限り簡潔に、
> 読み込むには?
>
>といったところです。
>「可能な限り簡潔に」とは、ソースコードとしても短く、かつ、オンライン
>マニュアルを読めて「はじめてのC」(技術評論社)程度にC言語の知識を
>持ち合わせている(C++はほとんどわからない)人が、ソースプログラム
>を読んで多くてもせいぜい10回程度(そのプログラムを)読み返すだけで理
>解できるレベルと考えて下さい。
「はじめてのC」を読んでないので、どこまで「簡潔」に出来たか解りませんが、
この記事の後ろにサンプルの関数を付けます。
>もう一つ重要なのはこのデータの各行は 200~400×5 個位の数字から成り立
>っているということです。すなわち行ごとに例えば Data[350] のような配列
>に読み込むことを考えます。
これは、一行あたりのデータの個数は可変ということですか?
もし不変なら、下の関数を使った後にfreeせずに済むのですが・・・。
/*
引数:
data 格納するdouble型へのポインタへのポインタ
str 取り出したいデータの数字が格納された文字列
vlen データ一つあたりの文字数
戻り値:
データの数(*dataの要素数)
*/
int GetValues(double **data, char *str, int vlen)
{
int i, ret;
char *buf;
ret = strlen(str) / vlen;
*data = (double*)malloc(sizeof(double)*ret+1);
buf = (char*)malloc(vlen+1);
for(i = 0; i < ret; i++)
{
strncpy(buf, str+(i*vlen), vlen);
buf[vlen] = '\0';
(*data)[i] = atof(buf);
}
free(buf);
return ret;
}
--
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
HandleName:しの
E-Mail : shino@planet.forum.or.jp
HomePage : http://www2.tky.3web.ne.jp/~shino211/index.shtml
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
Technical Details
Message-ID:
<6esp55$kul$1@news.fureai.or.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<6esjd9$4t@sakunami.gw.tohoku.ac.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,8756f6f59b5f78c5 X-Google-Attributes: gid106434,public From: "shino" <shino211@geocities.or.jp> Subject: Re: [Q]区切りなしデータを文字型でない配列に読むには? Date: 1998/03/20 Message-ID: <6esp55$kul$1@news.fureai.or.jp> X-Deja-AN: 335823616 Content-Transfer-Encoding: 7bit References: <6esjd9$4t@sakunami.gw.tohoku.ac.jp> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 Organization: Fureai Internet Newsgroups: fj.lang.c