# read

Leitura de matrizes

## Seqüência de Chamamento

    [x]=read(file-desc,m,n,[format])
                [x]=read(file-desc,m,n,k,format)

## Parâmetros

file-desc

  string especificando o nome do arquivo ou valor inteiro especificando uma unidade lógica (fortran)(ver file).

m, n

  inteiros (dimensões da matriz x). Ajuste m=-1 se você desconhece o número de linhas, para que todo o arquivo seja lido.

format

  string, especifica um formato "Fortran". Este string deve começar com um parêntese direito e terminar com um parêntese esquerdo. Formatos não podem misturar pontos flutuantes, inteiros ou modo de edição de caractere

k

  inteiro ou vetor de inteiros

## Descrição

Lê linha após linha a matriz x `mxn` (`n=1` para cadeia de caracteres) no arquivo `file-desc` (string ou inteiro). Cada linha da matriz `x` começa em uma nova linha do arquivo `file-desc`. Dependendo de `format`, uma dada linha da matriz `x` pode ser lida de mais de uma linha do arquivo `file-desc`.

O tipo do resultado dependerá do formato especificado. Se format contém apenas os descritores `(d,e,f,g)` a função tenta ler dados numéricos (o resultado é uma matriz de números reais).

Se format contém apenas o descritor `a` a função tenta ler strings (o resultado é um vetor coluna de strings). Neste caso, n deve ser igual a 1. Aviso: Os strings serão truncados se tiverem tamanho maior que 4093.

Exemplos para `format`:

    (1x,e10.3,5x,3(f3.0))
    (10x,a20)

Quando format é o omitido, os dados são lidos utilizando-se o formato numérico livre: espaços em branco, vírgulas e barras podem ser utilizados como separadores de dados, n*v pode ser utilizado para representar n ocorrências do valor n.

Um arquivo de acesso direto pode ser utilzado na presença de um parâmetro `k` que é um vetor de números de gravações a serem lidas (uma gravação por linha), logo `m` deve ser `m=prod(size(k))`.

Para ler no teclado use `read(%io(1),...)`.

## Observação

A última linha de cada arquivo de dados devemser terminada por uma nova linha (newline) a ser levada em conta.

## Exemplos

    mdelete(TMPDIR + '/foo');
    A = rand(3,5);
    write(TMPDIR + '/foo', A);
    B = read(TMPDIR + '/foo', 3, 5);
    B = read(TMPDIR + '/foo', -1, 5);
    read(%io(1), 1, 1, '(a)')  // espera por entrada do usuário

## Ver Também

- file
- readb
- write
- x_dialog
- mscanf
- mfscanf
- msscanf
- fscanfMat