Article View: fj.lang.c
Article #629Re: [Q]区切りなしデータを文字型
From: Masao Seki
Date: Tue, 24 Mar 1998 00:00
Date: Tue, 24 Mar 1998 00:00
59 lines
2759 bytes
2759 bytes
uehara@po.ntts.co.jp wrote:
>
> NTTソフトウェアの上原です。
こんにちは、上原さん。フォローどうも有り難うございます。
> In article <3515DE25.166F@rim.crl.fujixerox.co.jp> Masao Seki <seki@rim.crl.fujixerox.co.jp> writes:
> |関です。
> ~
> |それで、どうやるかですが、scanf系で書式中の機能を使って、実行時に
> |フィールド幅を指定する事は出来ないと思います。
>
> scanf系で「書式中の機能を使」うことにこだわらなければ
> 実行時にフィールド幅を指定するには
>
> char format[FIGURE*MAX+2+10];
> sprintf("%%%dd", FIGURE);
> scanf(&buf[FIGURE * i], format, FIGURE, &data[i]);
>
> で良いかな(未確認)?
あっ、この手がありましたね。昔良く使った手なのに、何で思い出さな
かったんだろう。
私自身の千葉さんへのフォロー記事で示したコーディングを、(半端の
発生はないとして)この方法で書き直すと、
char format[8];
sprintf(format, "%%%dd", WID)
/* log10(WID) < 5 が前提。 > Yamazaki Tadashi(ZacK) さん ;-) */
・
・
for (n=0, p=cbuf; n < len/WID; n++, p += WID) {
sscanf(p, format, ndata[m]+n);
}
と云う感じになりますか。この方がずっと良いですね。
>
> |しかし、他の機能はprintfとscanf系で対称性を保っているのに、どうして
> |「*」だけ、全く異なる機能が割り付けられているのでしょうね。(私の
>
> scanf系とprintf系では他にも非対称な部分はあります。
>
> %c に対応する型が char(scanf) か int(printf) か
> %h に対応する型が short(scanf) か int(printf) か
> %[~] はscanfにしか無い、
>
> とかですね。
これって、私の感覚では「機能は(方向の違いを無視すると)同じで、仕様
が少し違う。」位ですが・・。 scanf系の引数は全てポインタで、従って
整数への格上げやダブルへの型変換も有り得ないので、違って当然だと思い
ますが。
--
関 正生 <masao.seki@fujixerox.co.jp || ma-seki@gb3.so-net.or.jp>
Technical Details
Message-ID:
<3517269F.93C@rim.crl.fujixerox.co.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<35128671.389@rim.crl.fujixerox.co.jp> <1998Mar20.165703.12790@merope.opus.or.jp> <3515DE25.166F@rim.crl.fujixerox.co.jp> <UEHARA.98Mar23231554@gate.po.ntts.co.jp>Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 106434,8756f6f59b5f78c5 X-Google-Attributes: gid106434,public From: Masao Seki <seki@rim.crl.fujixerox.co.jp> Subject: Re: [Q]区切りなしデータを文字型 Date: 1998/03/24 Message-ID: <3517269F.93C@rim.crl.fujixerox.co.jp> X-Deja-AN: 337049998 Content-Transfer-Encoding: 7bit References: <35128671.389@rim.crl.fujixerox.co.jp> <1998Mar20.165703.12790@merope.opus.or.jp> <3515DE25.166F@rim.crl.fujixerox.co.jp> <UEHARA.98Mar23231554@gate.po.ntts.co.jp> Mime-Version: 1.0 Reply-To: masao.seki@fujixerox.co.jp Content-Type: text/plain; charset=iso-2022-jp Organization: Fuji Xerox Newsgroups: fj.lang.c