Próximo: Funções e Variáveis para caracteres, Anterior: Introdução a manipulação de seqüências de caracteres, Acima: stringproc [Conteúdo][Índice]
Exemplo:
(%i1) s: openw("E:/file.txt"); (%o1) #<output stream E:/file.txt> (%i2) control: "~2tAn atom: ~20t~a~%~2tand a list: ~20t~{~r ~}~%~2tand 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)$
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 atual 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 arquivo.
Se um arquivo já existente tiver sido aberto, opena
anexa os elementos ao final do arquivo.
Retorna um fluxo para arquivo. Se arquivo não existir, ele será criado.
Retorna um fluxo de saída para arquivo.
Se arquivo não existir, será criado.
Se um arquivo já existente for aberto, openw
modifica destrutivametne o arquivo.
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 seqüê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 ~[ seleção, ~] terminador de seleçã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 diretiva ~a
.
~s
mostra a seqüências de caracteres entre "aspas duplas", você pode evitar isso usando ~a
.
Note que a diretiva de seleção ~[
é indexada em zero.
Também note que existem algumas diretivas, que não trabalham no Maxima.
Por exemplo, ~:[
falha.
(%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.
Se dest for um fluxo ou true
, então printf
retorna false
.
De outra forma, printf
retorna uma seqüência de caracteres contendo a saída.
Retorna uma seqüê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 arquivo 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 irá ser chamada automaticamente a partir de stringproc.lisp
pode ser útil, se você desejar colocar uma parada de linha intermediária.
(%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) 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: Funções e Variáveis para caracteres, Anterior: Introdução a manipulação de seqüências de caracteres, Acima: stringproc [Conteúdo][Índice]