Next: Functions and Variables for characters, Previous: Introduction to string processing, Up: stringproc [Contents][Index]
例:
(%i1) s: openw("E:/file.txt"); (%o1) #<output stream E:/file.txt> (%i2) control: "~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2t\ and an integer: ~20t~d~%"$ (%i3) printf( s,control, 'true,[1,2,3],42 )$ (%o3) false (%i4) close(s); (%o4) true (%i5) s: openr("E:/file.txt"); (%o5) #<input stream E:/file.txt> (%i6) while stringp( tmp:readline(s) ) do print(tmp)$ An atom: true and a list: one two three and an integer: 42 (%i7) close(s)$
streamを閉じて、
もしstreamが開いていたら
true
を返します。
streamの中の要素の数を返します。
もしposが使われてないなら、
streamの中の現在位置を返します。
もしposが使われているなら、
fposition
はstreamの中の位置を設定します。
posは正の数でなければいけません。
streamの最初の要素は位置1にあります。
(streamに)改行を書きます。
newline()
の使用の例に関しては、
sprint
を参照してください。
newline()
が期待通りに動かない
いくつかの場合があることに注意してください。
fileへの出力ストリームを返します。
もし存在しているファイルを開いたら、
opena
はファイルの終わりに要素を追加します。
fileへの入力ストリームを返します。 もしfileが存在しないなら、生成されます。
fileへの出力ストリームを返します。
もしfileが存在しないなら、生成されます。
もし存在しているファイルを開いたら、openw
は
fileを破壊的に変更します。
Common Lisp関数FORMATをMaximaで利用可能にします。 (gcl.infoから: 「フォーマットは 制御文字列の文字を出力し、波形記号がディレクティブを挿入することを守ることで、 フォーマットされた出力を生成します。 波形記号の後の文字は多分、前置パラメータと修飾語が先行し、 望まれるフォーマットの種類を指定します。 ほとんどのディレクティブは、出力を生成するために1つまたは複数の引数を使います。」)
以下の記述と例はprintf
を使うアイデアを与えるかもしれません。
さらなる情報に関して、Lisp参考文献を参照してください。
~% 改行 ~& 行のフレッシュ ~t タブ ~$ 通貨記号 ~d 10進整数 ~b 2進整数 ~o 8進整数 ~x 16進整数 ~br b進整数 ~r 整数を一字一字 ~p 複数形 ~f 浮動小数点 ~e 科学的記数法 ~g 大きさに応じて~fまたは~e ~h 多倍長浮動小数点 ~a Maxima関数文字列を使う ~s ~aと同様, しかし"ダブルコーテーション"で囲まれた出力 ~~ ~ ~< 行揃え, ~> 終端 ~( 大文字小文字変換, ~) 終端 ~[ 選択, ~] 終端 ~{ 繰り返し, ~} 終端
選択ディレクティブ~[
は添字がゼロから始まることに注意してください。
ディレクティブ~*がサポートされていないことにも注意してください。
(%i1) printf( false, "~a ~a ~4f ~a ~@r", "String",sym,bound,sqrt(12),144), bound = 1.234; (%o1) String sym 1.23 2*sqrt(3) CXLIV (%i2) printf( false,"~{~a ~}",["one",2,"THREE"] ); (%o2) one 2 THREE (%i3) printf(true,"~{~{~9,1f ~}~%~}",mat ), mat = args(matrix([1.1,2,3.33],[4,5,6],[7,8.88,9]))$ 1.1 2.0 3.3 4.0 5.0 6.0 7.0 8.9 9.0 (%i4) control: "~:(~r~) bird~p ~[is~;are~] singing."$ (%i5) printf( false,control, n,n,if n=1 then 0 else 1 ), n=2; (%o5) Two birds are singing.
もしdestがストリームかtrue
なら、
printf
はfalse
を返します。
そうでないなら、printf
は出力を含む文字列を返します。
streamの現在位置から行の終わりまでの文字を含む文字列か、 もしファイルの終わりが来たらfalseを返します。
引数を順に評価し、一番左から始まる「一行」に表示します。
数は数の右隣に’-’と共に印字され、行の長さを無視します。
もし中間行ブレークを置きたいなら、
newline()
―stringproc.lisp
から自動ロードされます―
が役に立つかもしれません。
例:
(%i1) for n:0 thru 19 do sprint( fib(n) )$ 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 (%i2) for n:0 thru 22 do ( sprint(fib(n)), if mod(n,10)=9 then newline() )$ 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711
Next: Functions and Variables for characters, Previous: Introduction to string processing, Up: stringproc [Contents][Index]