🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #629

Re: [Q]区切りなしデータを文字型

#629
From: Masao Seki
Date: Tue, 24 Mar 1998 00:00
59 lines
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-mail
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>

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