80
01/06/2011 18:19 @ Arnaldo V Moura, Daniel F. Ferber 1 Curso de C Comunicação e Arquivos

Curso de C - Instituto de Computaçãowainer/cursos/2s2011/Cap16-Arquivos-s… · 01/06/2011 18:19 16 Curso C -IC/UNICAMP • Somente leitura• Somente leitura Fluxo de Dados: tipos

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • 01/06/2011 18:19 @ Arnaldo V Moura, Daniel F. Ferber 1

    Curso de C

    Comunicação e Arquivos

  • 01/06/2011 18:19 2

    Curso C - IC/UNICAMP

    Tipos Avançados de Dados

    • Fluxos de Dados

    • Arquivos

    – Abrir/Fechar

    – Ler/Escrever

    – Outras operações

    • Entrada/Saída Padrão

    Roteiro:

  • 01/06/2011 18:19 3

    Curso C - IC/UNICAMP

    É a comunicação entre o programa e outras entidades:

    – Teclado

    – Terminal/prompt DOS

    – Arquivos

    – Conexões de rede, Bluetooth

    – Impressoras

    – Portas seriais, USB, infra-vermelho

    – Outros programas

    É a comunicação entre o programa e outras entidades:

    – Teclado

    – Terminal/prompt DOS

    – Arquivos

    – Conexões de rede, Bluetooth

    – Impressoras

    – Portas seriais, USB, infra-vermelho

    – Outros programas

    Fluxo de Dados: definição

  • 01/06/2011 18:19 4

    Curso C - IC/UNICAMP

    Modelo de comunicação genérico e unificado:

    – Qualquer dispositivo parece funcionar da

    “mesma maneira”.

    – Programas mais simples.

    – Independência de plataforma e sistema

    operacional.

    Modelo de comunicação genérico e unificado:

    – Qualquer dispositivo parece funcionar da

    “mesma maneira”.

    – Programas mais simples.

    – Independência de plataforma e sistema

    operacional.

    Fluxo de Dados: vantagens

  • 01/06/2011 18:19 5

    Curso C - IC/UNICAMP

    • Produtor: escreve no fluxo• Produtor: escreve no fluxo

    Fluxo de Dados: modelo

  • 01/06/2011 18:19 6

    Curso C - IC/UNICAMP

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    Fluxo de Dados: modelo

  • 01/06/2011 18:19 7

    Curso C - IC/UNICAMP

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    • Fluxo: fila de entrega de dados– O fluxo preserva a ordem

    – Produtor e consumidor operam em ritmos diferentes

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    • Fluxo: fila de entrega de dados– O fluxo preserva a ordem

    – Produtor e consumidor operam em ritmos diferentes

    Fluxo de Dados: modelo

  • 01/06/2011 18:19 8

    Curso C - IC/UNICAMP

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    • Fluxo: fila de entrega de dados– O fluxo preserva a ordem

    – Produtor e consumidor operam em ritmos diferentes

    • Produtor: escreve no fluxo

    • Consumidor: lê do fluxo

    • Fluxo: fila de entrega de dados– O fluxo preserva a ordem

    – Produtor e consumidor operam em ritmos diferentes

    Fluxo de Dados: modelo

    ConsumidorConsumidorProdutorProdutor

    EscreveLê

    Fluxo

  • 01/06/2011 18:19 9

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser consumidor!• No fluxo, o programa pode ser consumidor!

    Fluxo de Dados: exemplo

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Arquivo(produtor)

    Arquivo(produtor)

  • 01/06/2011 18:19 10

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser consumidor!• No fluxo, o programa pode ser consumidor!

    Fluxo de Dados: exemplo

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Arquivo(produtor)

    Arquivo(produtor)

    Teclas pressionadas

  • 01/06/2011 18:19 11

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser consumidor!• No fluxo, o programa pode ser consumidor!

    Fluxo de Dados: exemplo

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Arquivo(produtor)

    Arquivo(produtor)

    Teclas pressionadas

    Dados

  • 01/06/2011 18:19 12

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser produtor!• No fluxo, o programa pode ser produtor!

    Fluxo de Dados: exemplo

    Programa(produtor)

    Programa(produtor)

    Arquivo(consumidor)

    Arquivo(consumidor)

    Tela DOS(consumidor)

    Tela DOS(consumidor)

  • 01/06/2011 18:19 13

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser produtor!• No fluxo, o programa pode ser produtor!

    Fluxo de Dados: exemplo

    Programa(produtor)

    Programa(produtor)

    Arquivo(consumidor)

    Arquivo(consumidor)

    Tela DOS(consumidor)

    Tela DOS(consumidor)

    Dados

  • 01/06/2011 18:19 14

    Curso C - IC/UNICAMP

    • No fluxo, o programa pode ser produtor!• No fluxo, o programa pode ser produtor!

    Fluxo de Dados: exemplo

    Programa(produtor)

    Programa(produtor)

    Arquivo(consumidor)

    Arquivo(consumidor)

    Tela DOS(consumidor)

    Tela DOS(consumidor)

    Resultados

    Dados

  • 01/06/2011 18:19 15

    Curso C - IC/UNICAMP

    • Somente leitura• Somente leitura

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

  • 01/06/2011 18:19 16

    Curso C - IC/UNICAMP

    • Somente leitura• Somente leitura

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Teclas pressionadas

  • 01/06/2011 18:19 17

    Curso C - IC/UNICAMP

    • Somente leitura

    • Somente escrita

    • Somente leitura

    • Somente escrita

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Teclas pressionadas

    Impressora(consumidor)

    Impressora(consumidor)

    Programa(produtor)

    Programa(produtor)

  • 01/06/2011 18:19 18

    Curso C - IC/UNICAMP

    • Somente leitura

    • Somente escrita

    • Somente leitura

    • Somente escrita

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Teclas pressionadas

    Impressora(consumidor)

    Impressora(consumidor)

    Dados Programa(produtor)

    Programa(produtor)

  • 01/06/2011 18:19 19

    Curso C - IC/UNICAMP

    • Somente leitura

    • Somente escrita

    • Leitura e escrita

    • Somente leitura

    • Somente escrita

    • Leitura e escrita

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Teclas pressionadas

    Impressora(consumidor)

    Impressora(consumidor)

    Dados Programa(produtor)

    Programa(produtor)

    Arquivo

    (produtor e

    consumidor)

    Arquivo

    (produtor e

    consumidor)

    Programa

    (produtor e

    consumidor)

    Programa

    (produtor e

    consumidor)

  • 01/06/2011 18:19 20

    Curso C - IC/UNICAMP

    • Somente leitura

    • Somente escrita

    • Leitura e escrita

    • Somente leitura

    • Somente escrita

    • Leitura e escrita

    Fluxo de Dados: tipos

    Programa(consumidor)

    Programa(consumidor)

    Teclado(produtor)

    Teclado(produtor)

    Teclas pressionadas

    Impressora(consumidor)

    Impressora(consumidor)

    Dados Programa(produtor)

    Programa(produtor)

    ConteúdoArquivo

    (produtor e

    consumidor)

    Arquivo

    (produtor e

    consumidor)

    Programa

    (produtor e

    consumidor)

    Programa

    (produtor e

    consumidor)

  • 01/06/2011 18:19 21

    Curso C - IC/UNICAMP

    • Posição de leitura:

    – Seqüencial ou aleatória

    • Posição de leitura:

    – Seqüencial ou aleatória

    Fluxo de Dados: fluxos de leitura

  • 01/06/2011 18:19 22

    Curso C - IC/UNICAMP

    • Posição de leitura:

    – Seqüencial ou aleatória

    • Comprimento:

    – Limitado ou ilimitado

    – Marcas BOF & EOF

    • Posição de leitura:

    – Seqüencial ou aleatória

    • Comprimento:

    – Limitado ou ilimitado

    – Marcas BOF & EOF

    Fluxo de Dados: fluxos de leitura

  • 01/06/2011 18:19 23

    Curso C - IC/UNICAMP

    • Posição de leitura:

    – Seqüencial ou aleatória

    • Comprimento:

    – Limitado ou ilimitado

    – Marcas BOF & EOF

    • Recebimento de dados:

    – Bloqueante ou não bloqueante

    • Posição de leitura:

    – Seqüencial ou aleatória

    • Comprimento:

    – Limitado ou ilimitado

    – Marcas BOF & EOF

    • Recebimento de dados:

    – Bloqueante ou não bloqueante

    Fluxo de Dados: fluxos de leitura

  • 01/06/2011 18:19 24

    Curso C - IC/UNICAMP

    • Posição de escrita:

    – Seqüencial ou aleatória

    • Posição de escrita:

    – Seqüencial ou aleatória

    Fluxo de Dados: fluxos de escrita

  • 01/06/2011 18:19 25

    Curso C - IC/UNICAMP

    • Posição de escrita:

    – Seqüencial ou aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Posição de escrita:

    – Seqüencial ou aleatória

    • Comprimento:

    – Praticamente ilimitado

    Fluxo de Dados: fluxos de escrita

  • 01/06/2011 18:19 26

    Curso C - IC/UNICAMP

    • Posição de escrita:

    – Seqüencial ou aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Envio de dados:

    – Bloqueante ou não bloqueante

    • Posição de escrita:

    – Seqüencial ou aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Envio de dados:

    – Bloqueante ou não bloqueante

    Fluxo de Dados: fluxos de escrita

  • 01/06/2011 18:19 27

    Curso C - IC/UNICAMP

    • Posição de leitura ou escrita:

    – Sempre aleatória

    • Posição de leitura ou escrita:

    – Sempre aleatória

    Fluxo de Dados: leitura e escrita

  • 01/06/2011 18:19 28

    Curso C - IC/UNICAMP

    • Posição de leitura ou escrita:

    – Sempre aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Posição de leitura ou escrita:

    – Sempre aleatória

    • Comprimento:

    – Praticamente ilimitado

    Fluxo de Dados: leitura e escrita

  • 01/06/2011 18:19 29

    Curso C - IC/UNICAMP

    • Posição de leitura ou escrita:

    – Sempre aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Envio de dados:

    – Bloqueante ou não bloqueante

    • Posição de leitura ou escrita:

    – Sempre aleatória

    • Comprimento:

    – Praticamente ilimitado

    • Envio de dados:

    – Bloqueante ou não bloqueante

    Fluxo de Dados: leitura e escrita

  • 01/06/2011 18:19 30

    Curso C - IC/UNICAMP

    • Fluxo binário• Fluxo binário

    Fluxo de Dados: peculiaridades

  • 01/06/2011 18:19 31

    Curso C - IC/UNICAMP

    • Fluxo binário

    • Fluxo texto

    – Reconhecimento de ‘\n’

    – Traduções automáticas de símbolos

    – Tratamento automático do símbolo EOF

    • Fluxo binário

    • Fluxo texto

    – Reconhecimento de ‘\n’

    – Traduções automáticas de símbolos

    – Tratamento automático do símbolo EOF

    Fluxo de Dados: peculiaridades

  • 01/06/2011 18:19 32

    Curso C - IC/UNICAMP

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Tipo de acesso (seqüencial ou aleatório)

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Tipo de acesso (seqüencial ou aleatório)

    Fluxo de Dados: operações

  • 01/06/2011 18:19 33

    Curso C - IC/UNICAMP

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Define acesso (seqüencial ou aleatório)

    2. Ler e/ou escrever dados

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Define acesso (seqüencial ou aleatório)

    2. Ler e/ou escrever dados

    Fluxo de Dados: operações

  • 01/06/2011 18:19 34

    Curso C - IC/UNICAMP

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Define acesso (seqüencial ou aleatório)

    2. Ler e/ou escrever dados

    3. Fechar (terminar) o fluxo

    • Libera recursos

    • Permite uso do fluxo por outro programa

    1. Abrir (estabelecer) o fluxo

    • Define operações permitidas

    • Especifica tipo de fluxo (binário/texto)

    • Define acesso (seqüencial ou aleatório)

    2. Ler e/ou escrever dados

    3. Fechar (terminar) o fluxo

    • Libera recursos

    • Permite uso do fluxo por outro programa

    Fluxo de Dados: operações

  • 01/06/2011 18:19 35

    Comunicação e Arquivos

    Acesso a arquivos

  • 01/06/2011 18:19 36

    Curso C - IC/UNICAMP

    Declaração:

    FILE * arquivo;

    • Define um fluxo para leitura e escrita em arquivo.

    • Cada variável declarada é um fluxo independente• Não é relevante como funciona o tipo FILE *

    Declaração:

    FILE * arquivo;

    • Define um fluxo para leitura e escrita em arquivo.

    • Cada variável declarada é um fluxo independente• Não é relevante como funciona o tipo FILE *

    Arquivos: tipos de dados

  • 01/06/2011 18:19 37

    Curso C - IC/UNICAMP

    Arquivos: abrir e fechar

    FILE *arquivo;arquivo = fopen( nome, modo) ;

  • 01/06/2011 18:19 38

    Curso C - IC/UNICAMP

    Arquivos: abrir e fechar

    FILE *arquivo;arquivo = fopen( nome, modo) ;

    • Unidade de disco e diretório

    • Caminho Relativo

    • Nome do arquivo

  • 01/06/2011 18:19 39

    Curso C - IC/UNICAMP

    Arquivos: abrir e fechar

    FILE *arquivo;arquivo = fopen( nome, modo) ;

    • Unidade de disco e diretório

    • Caminho Relativo

    • Nome do arquivo

    “r” “r+”

    “w” “w+”

    “a” “a+”

    “b”: binário

    “t”: texto

  • 01/06/2011 18:19 40

    Curso C - IC/UNICAMP

    Arquivos: abrir e fechar

    FILE *arquivo;arquivo = fopen( nome, modo) ;

    fclose( arquivo) ;

    • Unidade de disco e diretório

    • Caminho Relativo

    • Nome do arquivo

    “r” “r+”

    “w” “w+”

    “a” “a+”

    “b”: binário

    “t”: texto

  • 01/06/2011 18:19 41

    Curso C - IC/UNICAMP

    FILE *arquivo;

    arquivo = fopen(“alunos.txt”, “r”);

    ...

    // Lê o nome de todos os alunos

    ...

    fclose(arquivo);

    FILE *arquivo;

    arquivo = fopen(“alunos.txt”, “r”);

    ...

    // Lê o nome de todos os alunos

    ...

    fclose(arquivo);

    Arquivos: abrir e fechar

  • 01/06/2011 18:19 42

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;arquivo = fopen( nome, modo);

    fscanf(arquivo, “formato”, &variavel);

  • 01/06/2011 18:19 43

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;arquivo = fopen( nome, modo);

    fscanf(arquivo, “formato”, &variavel);

    Semelhante ascanf

  • 01/06/2011 18:19 44

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;arquivo = fopen( nome, modo);

    fscanf(arquivo, “formato”, &variavel);

    %d, %f, %c, %s, etc

    Semelhante ascanf

  • 01/06/2011 18:19 45

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;arquivo = fopen( nome, modo);

    fscanf(arquivo, “formato”, &variavel);

    %d, %f, %c, %s, etc

    Lista de

    variáveisSemelhante ascanf

  • 01/06/2011 18:19 46

    Curso C - IC/UNICAMP

    Arquivos: leitura

    Leitura:Arquivo:José 9.5 8.5

    Ana 7.0 8.0

    Paulo 3.5 5.5

    Arquivo:José 9.5 8.5

    Ana 7.0 8.0

    Paulo 3.5 5.5

  • 01/06/2011 18:19 47

    Curso C - IC/UNICAMP

    FILE *arquivo;char nome[30];float nota1, nota2;

    arquivo = fopen(“alunos.txt”, “r”);...// Lê o nome e nota do primeiro alunofscanf(arquivo, “%s %f %f”, nome, &nota1,

    &nota2);...fclose(arquivo);

    FILE *arquivo;char nome[30];float nota1, nota2;

    arquivo = fopen(“alunos.txt”, “ r ”);...// Lê o nome e nota do primeiro alunofscanf(arquivo, “%s %f %f”, nome, &nota1,

    &nota2);...fclose(arquivo);

    Arquivos: leitura

    Leitura:Arquivo:José 9.5 8.5

    Ana 7.0 8.0

    Paulo 3.5 5.5

    Arquivo:José 9.5 8.5

    Ana 7.0 8.0

    Paulo 3.5 5.5

  • 01/06/2011 18:19 48

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;char c, linha[102];arquivo = fopen( nome, modo);

    Ler um caractere:

    Ler uma linha:

  • 01/06/2011 18:19 49

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;char c, linha[102];arquivo = fopen( nome, modo);

    c = fgetc(arquivo);Ler um caractere:

    Ler uma linha:

  • 01/06/2011 18:19 50

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;char c, linha[102];arquivo = fopen( nome, modo);

    c = fgetc(arquivo);Ler um caractere:

    fgets(linha, 100, arquivo);Ler uma linha:

  • 01/06/2011 18:19 51

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;char c, linha[102];arquivo = fopen( nome, modo);

    c = fgetc(arquivo);Ler um caractere:

    variável para armazenar conteúdo

    fgets(linha, 100, arquivo);Ler uma linha:

  • 01/06/2011 18:19 52

    Curso C - IC/UNICAMP

    Arquivos: leitura

    FILE *arquivo;char c, linha[102];arquivo = fopen( nome, modo);

    c = fgetc(arquivo);Ler um caractere:

    Tamanho

    máximovariável para armazenar conteúdo

    fgets(linha, 100, arquivo);Ler uma linha:

  • 01/06/2011 18:19 53

    Curso C - IC/UNICAMP

    Arquivos: leitura

    Arquivo:Prezado cliente,

    Gostaríamos de...

    Arquivo:Prezado cliente,

    Gostaríamos de...

  • 01/06/2011 18:19 54

    Curso C - IC/UNICAMP

    FILE *arquivo;

    char linha1[102], linha2[102];

    arquivo = fopen(“mensagem.txt”, “r”);

    ...

    fgets(linha1, 100, arquivo);

    fgets(linha2, 100, arquivo);

    ...

    fclose(arquivo);

    FILE *arquivo;

    char linha1[102], linha2[102];

    arquivo = fopen(“mensagem.txt”, “ r ”);

    ...

    fgets(linha1, 100, arquivo);

    fgets(linha2, 100, arquivo);

    ...

    fclose(arquivo);

    Arquivos: leitura

    Arquivo:Prezado cliente,

    Gostaríamos de...

    Arquivo:Prezado cliente,

    Gostaríamos de...

  • 01/06/2011 18:19 55

    Curso C - IC/UNICAMP

    FILE *arquivo;

    char linha1[102], linha2[102];

    arquivo = fopen(“mensagem.txt”, “r”);

    ...

    fgets(linha1, 100, arquivo);

    fgets(linha2, 100, arquivo);

    ...

    fclose(arquivo);

    FILE *arquivo;

    char linha1[102], linha2[102];

    arquivo = fopen(“mensagem.txt”, “ r ”);

    ...

    fgets(linha1, 100, arquivo);

    fgets(linha2, 100, arquivo);

    ...

    fclose(arquivo);

    Arquivos: leitura

    Arquivo:Prezado cliente,

    Gostaríamos de...

    Arquivo:Prezado cliente,

    Gostaríamos de...

    linha1← “Prezado cliente,”

    linha2← “Gostaríamos de...”

    linha1← “Prezado cliente,”

    linha2← “Gostaríamos de...”

  • 01/06/2011 18:19 56

    Curso C - IC/UNICAMP

    Arquivos: fim de arquivo

    FILE *arquivo;arquivo = fopen(“mensagem.txt”, “r”);...while (! feof(arquivo) ) {

    ...Operação de leitura...

    }...fclose(arquivo);

  • 01/06/2011 18:19 57

    Curso C - IC/UNICAMP

    Arquivos: fim de arquivo

    FILE *arquivo;char nome[30];float nota1, nota2;

    arquivo = fopen(“notas.txt”, “r”);...while (! feof(arquivo)) {

    q = fscanf(arquivo, “%s %f %f”,nome,&nota1,&nota2);if (q == 0) break;...

    }...fclose(arquivo);

  • 01/06/2011 18:19 58

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);

    fprintf(arquivo, “texto”, &variavel);

  • 01/06/2011 18:19 59

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);

    fprintf(arquivo, “texto”, &variavel);

    Semelhante aprintf

  • 01/06/2011 18:19 60

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);

    fprintf(arquivo, “texto”, &variavel);

    %d, %f, %c, %s, etc

    Semelhante aprintf

  • 01/06/2011 18:19 61

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);

    fprintf(arquivo, “texto”, &variavel);

    Lista de

    variáveis

    %d, %f, %c, %s, etc

    Semelhante aprintf

  • 01/06/2011 18:19 62

    Curso C - IC/UNICAMP

    FILE *arquivo;

    char nome[30];

    float nota1, nota2;

    arquivo = fopen(“alunos.txt”, “w”);

    ...

    // Escreve nome e nota do primeiro alunofprintf(arquivo,“%s %f %f”,nome,nota1,nota2);

    ...

    fclose(arquivo);

    FILE *arquivo;

    char nome[30];

    float nota1, nota2;

    arquivo = fopen(“alunos.txt”, “ w”);

    ...

    // Escreve nome e nota do primeiro alunofprintf(arquivo,“%s %f %f”,nome,nota1,nota2);

    ...

    fclose(arquivo);

    Arquivos: escrita

  • 01/06/2011 18:19 63

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);char c, texto[100];

    Escrever um caractere:

    Escrever um texto:

    Garantir escrita no disco:

  • 01/06/2011 18:19 64

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);char c, texto[100];

    fputc(c, arquivo);Escrever um caractere:

    Escrever um texto:

    Garantir escrita no disco:

  • 01/06/2011 18:19 65

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);char c, texto[100];

    fputc(c, arquivo);Escrever um caractere:

    fputs(linha, arquivo);Escrever um texto:

    Garantir escrita no disco:

  • 01/06/2011 18:19 66

    Curso C - IC/UNICAMP

    Arquivos: escrita

    FILE *arquivo;arquivo = fopen( nome, modo);char c, texto[100];

    fputc(c, arquivo);Escrever um caractere:

    fputs(linha, arquivo);Escrever um texto:

    fflush(arquivo);Garantir escrita no disco:

  • 01/06/2011 18:19 67

    Curso C - IC/UNICAMP

    FILE *arquivo;

    arquivo = fopen(“mensagem.txt”, “w”);

    ...fprintf(arquivo, “Resultado da operacao:\n”);

    // ou:fputs(“Resultado da operacao:\n”, arquivo);

    ...

    fclose(arquivo);

    FILE *arquivo;

    arquivo = fopen(“mensagem.txt”, “ w”);

    ...fprintf(arquivo, “Resultado da operacao:\n”);

    // ou:fputs(“Resultado da operacao:\n”, arquivo);

    ...

    fclose(arquivo);

    Arquivos: escrita

    Arquivos

  • 01/06/2011 18:19 68

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    Voltar ao inicio do arquivo:

    Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    Avançar/Retroceder:

  • 01/06/2011 18:19 69

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    rewind(arquivo);Voltar ao inicio do arquivo:

    Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    Avançar/Retroceder:

  • 01/06/2011 18:19 70

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    rewind(arquivo);Voltar ao inicio do arquivo:

    p = ftell(arquivo);Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    Avançar/Retroceder:

  • 01/06/2011 18:19 71

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    rewind(arquivo);Voltar ao inicio do arquivo:

    p = ftell(arquivo);Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    fseek(arquivo, deslocamento, referência);

    Avançar/Retroceder:

  • 01/06/2011 18:19 72

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    rewind(arquivo);Voltar ao inicio do arquivo:

    p = ftell(arquivo);Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    fseek(arquivo, deslocamento, referência);

    Avançar/Retroceder:

    positivo: avança

    negativo: retrocede

  • 01/06/2011 18:19 73

    Curso C - IC/UNICAMP

    Arquivos: deslocamentos

    FILE *arquivo;arquivo = fopen( nome, modo);

    rewind(arquivo);Voltar ao inicio do arquivo:

    p = ftell(arquivo);Consultar a posição atual:

    obrigatório: “w+” ou “r+”

    fseek(arquivo, deslocamento, referência);

    Avançar/Retroceder:

    positivo: avança

    negativo: retrocede SEEK_CUR, SEEK_END, SEEK_SET

  • 01/06/2011 18:19 74

    Comunicação e Arquivos

    Entrada/Saída Padrão

  • 01/06/2011 18:19 75

    Curso C - IC/UNICAMP

    • Três arquivos abertos automaticamente:• Três arquivos abertos automaticamente:

    Entrada/Saída Padrão

  • 01/06/2011 18:19 76

    Curso C - IC/UNICAMP

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    Entrada/Saída Padrão

  • 01/06/2011 18:19 77

    Curso C - IC/UNICAMP

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    Entrada/Saída Padrão

  • 01/06/2011 18:19 78

    Curso C - IC/UNICAMP

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    – stderr : saída de erro (terminal/tela DOS)

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    – stderr : saída de erro (terminal/tela DOS)

    Entrada/Saída Padrão

  • 01/06/2011 18:19 79

    Curso C - IC/UNICAMP

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    – stderr : saída de erro (terminal/tela DOS)

    • Equivalentes:printf(“texto”);

    fprintf(stdout, “texto”);

    • Três arquivos abertos automaticamente:

    – stdin : entrada padrão (teclado)

    – stdout : saída padrão (terminal/tela DOS)

    – stderr : saída de erro (terminal/tela DOS)

    • Equivalentes:printf(“texto”);

    fprintf(stdout, “texto”);

    Entrada/Saída Padrão

  • 01/06/2011 18:19 80

    Comunicação e Arquivos

    FormatArq