C言語関係掲示板

過去ログ

No.321.一行がとても長い関数の対処について

[戻る] [ホームページ]

No.1999

一行がとても長い関数の対処について
投稿者---sato(2002/07/07 17:59:44)


satoと申します。
関数の一行が異常に長いときはどのようにしたら良いのでしょうか?
具体的には以下です。

fscanf(fp1,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",
m[0],m[1],m[2],m[3],m[4],m[5],m[6],,m[7],m[8],m[9],m[10],
m[11],m[12],m[12],m[13],m[14],m[15],m[16],,m[17],m[18],m[19],m[20],
m[21],m[22],m[23],m[24],m[25],m[26],m[27],m[28],m[29],m[30],
m[31],m[32],m[33],m[34],m[35],m[36],m[37],m[38],m[39],m[40],
m[41],m[42],m[43],m[44],m[45],m[46],m[47],m[48],m[49],m[50],
m[51],m[52],m[53],m[54],m[55],m[56],m[57],m[58],m[59],m[60],
m[61],m[62],m[63],m[64],m[65],m[66],m[67],m[68],m[69],m[70],
m[71],m[72],m[73],m[74],m[75],m[76],m[77],m[78],m[79],m[80],
m[81],m[82],m[83],m[84],m[85],m[86],m[87],m[88],m[89],m[90],
m[91],m[92],m[93],m[94],m[95],m[96],m[97],m[98],m[99],m[100],
m[101],m[102],m[103],m[104],m[105],m[106],m[107],m[108],m[109],m[110],
m[111],m[112],m[113],m[114],m[115],m[116],m[117],m[118],m[119],m[120],);

これを一行に並べると,1000文字を越え,コンパイルできません。
上記のように途中で改行をしてもコンパイルが通りません。
書き方が悪いと言われればそれまでですが,良い方法はないでしょうか?
よろしくお願いします。

環境は,win95+bcc5.5です。

No.2002

Re:一行がとても長い関数の対処について
投稿者---kikk(2002/07/07 19:52:59)


ども。


どうしてforで書かないのかはおいておくとして。。


とりあえず、

1. 文字列定数(""でくくられた並び)を改行で中断するには、
 i) 行末に\を書く
 ii) いったん"で区切って、次の行(空白があっても可)で
   また"ではじめる。
2. 「,,」となっているところが2か所ある
3. 「m[120],」 ->「m[120]」

が違っています。1だけ補足しておくと、i)は、行の内容に関わらず
行を結合するための方法で、ii)は連続した文字列定数の結合機能を
利用したものです(文字列定数の結合は普通はこっちを使う)。ii)の
方法があるので、i)の方法を使う場面は、複数行にわたってマクロを
書きたい場合くらいだと思います。ii)の機能はANSI-C以前の古い
コンパイラでは使えないかもしれませんけど。。

BCCでコンパイルしたところ、確かにエラー(文法エラー)はでますが、
「行が長すぎる」というものではありませんでした。


なお、提示されたコードを含んだmain()を全部1行に書いて、
BCCでコンパイルしてみましたが、できました。


では。

No.2003

Re:一行がとても長い関数の対処について
投稿者---かずま(2002/07/07 20:03:20)


> 書き方が悪いと言われればそれまでですが,良い方法はないでしょうか?
    for (i = 0; i < 121; i++)
        if (fscanf(fp1, "%s", m[i]) != 1) exit(1);