Próximo: Definições para caracteres, Anterior: Introdução a manipulação de sequências de caracteres, Acima: stringproc [Conteúdo][Índice]
Exemplo:
(%i1) load("stringproc")$ (%i2) s: openw("E:/file.txt"); (%o2) #<output stream E:/file.txt> (%i3) control: "~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2tand an integer: ~20t~d~%"$ (%i4) printf( s,control, 'true,[1,2,3],42 )$ (%o4) false (%i5) close(s); (%o5) true (%i6) s: openr("E:/file.txt"); (%o6) #<input stream E:/file.txt> (%i7) while stringp( tmp:readline(s) ) do print(tmp)$ An atom: true and a list: one two three and an integer: 42 (%i8) close(s)$
Fecha fluxo e retorna true
se fluxo tiver sido aberto anteriormente.
Retorna o número de elementos em fluxo.
Retorna a posição corrente em fluxo, se pos não está sendo usada.
Se pos estiver sendo usada,
fposition
escolhe a posição em fluxo.
pos tem que ser um número positivo,
o primeiro elemento em fluxo está na posição 1.
escreve uma nova linha (em fluxo),
se a posição actual não for um início de linha.
Veja também newline
.
Escreve uma nova linha (para fluxo).
Veja sprint
para um exemplo de uso de newline()
.
Note que existem alguns casos, onde newline()
não trabalha como esperado.
Retorna um fluxo de saída para ficheiro.
Se um ficheiro já existente tiver sido aberto, opena
anexa os elementos ao final do ficheiro.
Retorna um fluxo para ficheiro. Se ficheiro não existir, ele será criado.
Retorna um fluxo de saída para ficheiro.
Se ficheiro não existir, será criado.
Se um ficheiro já existente for aberto, openw
modifica destrutivametne o ficheiro.
Torna a função FORMAT do Lisp Comum disponível no Maxima. (Retirado de gcl.info: "format produces formatted output by outputting the caracteres of control-string string and observing that a tilde introduces a directive. The caractere after the tilde, possibly preceded by prefix parameters and modifiers, specifies what kind of formatting is desired. Most directives use one or more elements of args to create their output.")
A seguinte descrição e oa exemplos podem fornecer uma idéia de uso de printf
.
Veja um referência de Lisp para maiores informações.
~% nova linha ~& novíssima line ~t tabulação ~$ monetário ~d inteiro decimal ~b inteiro binário ~o inteiro octal ~x inteiro hexadecimal ~br inteiro de base b ~r soletra um inteiro ~p plural ~f ponto flutuante ~e notação científica ~g ~f ou ~e, dependendo da magnitude ~a como mostrado pela função print do Maxima ~s sequências de caracteres entre "aspas duplas" ~~ ~ ~< justificação de texto, ~> terminador de justificação de texto ~( conversão de caixa alta/baixa, ~) terminador de conversão de caixa ~[ selecção, ~] terminador de selecção ~{ iteração, ~} terminador de iteração
Por favor note que não existe especificador de formato para grandes
números em ponto flutuante. Todavia grandes números em ponto
flutuante podem simplesmente serem mostrados por meio da directiva
~a
. ~s
mostra as sequências de caracteres entre "aspas
duplas"; pode evitar isso usando ~a
. Note que a directiva de
selecção ~[
é indexada em zero. Também note que existem
algumas directivas, que não trabalham no Maxima. Por exemplo,
~:[
falha.
(%i1) load("stringproc")$ (%i2) printf( false, "~a ~a ~4f ~a ~@r", "String",sym,bound,sqrt(12),144), bound = 1.234; (%o2) String sym 1.23 2*sqrt(3) CXLIV (%i3) printf( false,"~{~a ~}",["one",2,"THREE"] ); (%o3) one 2 THREE (%i4) 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 (%i5) control: "~:(~r~) bird~p ~[is~;are~] singing."$ (%i6) printf( false,control, n,n,if n=1 then 0 else 1 ), n=2; (%o6) Two birds are singing.
Se dest for um fluxo ou true
, então printf
retorna false
.
De outra forma, printf
retorna uma sequência de caracteres contendo a saída.
Retorna uma sequência de caracteres contendo os caracteres a partir da posição corrente em fluxo até o fim de linha ou false se o fim de linha do ficheiro for encontrado.
Avalia e mostra seus argumentos um após o outro ‘sobre uma linha’
iniciando na posição mais à esquerda. Os números são
mostrados com o ’-’ à direita do número, e isso desconsidera o
comprimento da linha. newline()
, que pode ser chamada a partir de
stringproc.lisp
pode ser útil, se desejar colocar uma parada de
linha intermédia.
(%i1) for n:0 thru 22 do sprint( fib(n) )$ 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 (%i2) load("stringproc")$ (%i3) 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
Próximo: Definições para caracteres, Anterior: Introdução a manipulação de sequências de caracteres, Acima: stringproc [Conteúdo][Índice]