SlideShare una empresa de Scribd logo
1 de 81
Descargar para leer sin conexión
Curso de C


                 Comunicação e Arquivos




8/6/2009 10:26        @ Arnaldo V Moura, Daniel F. Ferber   1
Curso C - IC/UNICAMP

                 Tipos Avançados de Dados

Roteiro:
• Fluxos de Dados
• Arquivos
     – Abrir/Fechar
     – Ler/Escrever
     – Outras operações
• Entrada/Saída Padrão

8/6/2009 10:26                                  2
Comunicação e Arquivos


                 Modelo de Fluxo de Dados




8/6/2009 10:26                              3
Curso C - IC/UNICAMP

                 Fluxo de Dados: definição

É a comunicação entre o programa e outras entidades:
É a comunicação entre o programa e outras entidades:
   – Teclado
    – Teclado
   – Terminal/prompt DOS
    – Terminal/prompt DOS
   – Arquivos
    – Arquivos
   – Conexões de rede, Bluetooth
    – Conexões de rede, Bluetooth
   – Impressoras
    – Impressoras
   – Portas seriais, USB, infra-vermelho
    – Portas seriais, USB, infra-vermelho
   – Outros programas
    – Outros programas



8/6/2009 10:26                                        4
Curso C - IC/UNICAMP

                 Fluxo de Dados: vantagens


Modelo de comunicação genérico e unificado:
Modelo de comunicação genérico e unificado:
  – Qualquer dispositivo parece funcionar da
  – Qualquer dispositivo parece funcionar da
    “mesma maneira”.
     “mesma maneira”.
  – Programas mais simples.
  – Programas mais simples.
  – Independência de plataforma e sistema
  – Independência de plataforma e sistema
    operacional.
     operacional.



8/6/2009 10:26                                   5
Curso C - IC/UNICAMP

                  Fluxo de Dados: modelo

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




8/6/2009 10:26                                  6
Curso C - IC/UNICAMP

                    Fluxo de Dados: modelo

••   Produtor: escreve no fluxo
     Produtor: escreve no fluxo
••   Consumidor: lê do fluxo
     Consumidor: lê do fluxo




8/6/2009 10:26                                    7
Curso C - IC/UNICAMP

                     Fluxo de Dados: modelo

••   Produtor: escreve no fluxo
     Produtor: escreve no fluxo
••   Consumidor: lê do fluxo
     Consumidor: lê do fluxo
••   Fluxo: fila de entrega de dados
     Fluxo: fila de entrega de dados
      – O fluxo preserva a ordem
      – O fluxo preserva a ordem
      – Produtor e consumidor operam em ritmos diferentes
      – Produtor e consumidor operam em ritmos diferentes




8/6/2009 10:26                                              8
Curso C - IC/UNICAMP

                     Fluxo de Dados: modelo

••   Produtor: escreve no fluxo
     Produtor: escreve no fluxo
••   Consumidor: lê do fluxo
     Consumidor: lê do fluxo
••   Fluxo: fila de entrega de dados
     Fluxo: fila de entrega de dados
      – O fluxo preserva a ordem
      – O fluxo preserva a ordem
      – Produtor e consumidor operam em ritmos diferentes
      – Produtor e consumidor operam em ritmos diferentes


      Escreve                                   Lê


        Produtor
        Produtor            Fluxo            Consumidor
                                             Consumidor
8/6/2009 10:26                                              9
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo

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


                 Teclado
                 Teclado
                 (produtor)
                  (produtor)


                                              Programa
                                              Programa
                                              (consumidor)
                                               (consumidor)

                 Arquivo
                 Arquivo
                 (produtor)
                  (produtor)

8/6/2009 10:26                                                10
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo

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


                 Teclado
                 Teclado
                 (produtor)     Tecla
                  (produtor)         s pre
                                          ssion
                                               adas
                                                      Programa
                                                      Programa
                                                      (consumidor)
                                                       (consumidor)

                 Arquivo
                 Arquivo
                 (produtor)
                  (produtor)

8/6/2009 10:26                                                        11
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo

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


                 Teclado
                 Teclado
                 (produtor)     Tecla
                  (produtor)         s pre
                                          ssion
                                               adas
                                                      Programa
                                                      Programa
                                                      (consumidor)
                                                       (consumidor)
                                           s
                 Arquivo               Dado
                 Arquivo
                 (produtor)
                  (produtor)

8/6/2009 10:26                                                        12
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo


•• No fluxo, o programa pode ser produtor!
   No fluxo, o programa pode ser produtor!
                                               Arquivo
                                               Arquivo
                                              (consumidor)
                                               (consumidor)


             Programa
             Programa
                 (produtor)
                  (produtor)


                                              Tela DOS
                                              Tela DOS
                                              (consumidor)
                                               (consumidor)



8/6/2009 10:26                                                13
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo


•• No fluxo, o programa pode ser produtor!
   No fluxo, o programa pode ser produtor!
                                               Arquivo
                                               Arquivo
                                              (consumidor)
                                               (consumidor)
                                        s
                                    Dado
             Programa
             Programa
                 (produtor)
                  (produtor)


                                              Tela DOS
                                              Tela DOS
                                              (consumidor)
                                               (consumidor)



8/6/2009 10:26                                                14
Curso C - IC/UNICAMP

                               Fluxo de Dados: exemplo


•• No fluxo, o programa pode ser produtor!
   No fluxo, o programa pode ser produtor!
                                                   Arquivo
                                                   Arquivo
                                                  (consumidor)
                                                   (consumidor)
                                        s
                                    Dado
             Programa
             Programa
                 (produtor)
                  (produtor)
                                  Resu
                                         ltado
                                              s
                                                  Tela DOS
                                                  Tela DOS
                                                  (consumidor)
                                                   (consumidor)



8/6/2009 10:26                                                    15
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado                     Programa
                                             Programa
                 (produtor)
                  (produtor)                 (consumidor)
                                              (consumidor)




8/6/2009 10:26                                               16
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado       Teclas pressionadas   Programa
                                                     Programa
                 (produtor)
                  (produtor)                         (consumidor)
                                                      (consumidor)




8/6/2009 10:26                                                       17
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado       Teclas pressionadas   Programa
                                                     Programa
                 (produtor)
                  (produtor)                         (consumidor)
                                                      (consumidor)
•• Somente escrita
   Somente escrita
             Impressora
              Impressora                             Programa
                                                     Programa
             (consumidor)
              (consumidor)                            (produtor)
                                                       (produtor)




8/6/2009 10:26                                                       18
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado       Teclas pressionadas   Programa
                                                     Programa
                 (produtor)
                  (produtor)                         (consumidor)
                                                      (consumidor)
•• Somente escrita
   Somente escrita
             Impressora
              Impressora               Dados
                                                     Programa
                                                     Programa
             (consumidor)
              (consumidor)                            (produtor)
                                                       (produtor)




8/6/2009 10:26                                                       19
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado       Teclas pressionadas    Programa
                                                      Programa
                 (produtor)
                  (produtor)                         (consumidor)
                                                      (consumidor)
•• Somente escrita
   Somente escrita
             Impressora
              Impressora               Dados
                                                      Programa
                                                      Programa
             (consumidor)
              (consumidor)                             (produtor)
                                                        (produtor)
•• Leitura e escrita
   Leitura e escrita
               Arquivo
                Arquivo                                Programa
                                                        Programa
             (produtor e
              (produtor e                             (produtor e
                                                       (produtor e
            consumidor)
             consumidor)                             consumidor)
                                                      consumidor)
8/6/2009 10:26                                                       20
Curso C - IC/UNICAMP

                               Fluxo de Dados: tipos


•• Somente leitura
   Somente leitura
                 Teclado
                 Teclado       Teclas pressionadas    Programa
                                                      Programa
                 (produtor)
                  (produtor)                         (consumidor)
                                                      (consumidor)
•• Somente escrita
   Somente escrita
             Impressora
              Impressora               Dados
                                                      Programa
                                                      Programa
             (consumidor)
              (consumidor)                             (produtor)
                                                        (produtor)
•• Leitura e escrita
   Leitura e escrita
               Arquivo
                Arquivo                                Programa
                                                        Programa
             (produtor e
              (produtor e           Conteúdo          (produtor e
                                                       (produtor e
            consumidor)
             consumidor)                             consumidor)
                                                      consumidor)
8/6/2009 10:26                                                       21
Curso C - IC/UNICAMP

                 Fluxo de Dados: fluxos de leitura



•• Posição de leitura:
   Posição de leitura:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório




8/6/2009 10:26                                       22
Curso C - IC/UNICAMP

                  Fluxo de Dados: fluxos de leitura



•• Posição de leitura:
   Posição de leitura:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório
•• Comprimento:
   Comprimento:
     – Limitado ou ilimitado
     – Limitado ou ilimitado
     – Marcas BOF & EOF
     – Marcas BOF & EOF



8/6/2009 10:26                                        23
Curso C - IC/UNICAMP

                  Fluxo de Dados: fluxos de leitura



•• Posição de leitura:
   Posição de leitura:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório
•• Comprimento:
   Comprimento:
     – Limitado ou ilimitado
     – Limitado ou ilimitado
     – Marcas BOF & EOF
     – Marcas BOF & EOF
•• Recebimento de dados:
   Recebimento de dados:
     – Bloqueante ou não bloqueante
     – Bloqueante ou não bloqueante
8/6/2009 10:26                                        24
Curso C - IC/UNICAMP

                 Fluxo de Dados: fluxos de escrita



•• Posição de escrita:
   Posição de escrita:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório




8/6/2009 10:26                                       25
Curso C - IC/UNICAMP

                 Fluxo de Dados: fluxos de escrita



•• Posição de escrita:
   Posição de escrita:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório
•• Comprimento:
   Comprimento:
     – Praticamente ilimitado
     – Praticamente ilimitado




8/6/2009 10:26                                       26
Curso C - IC/UNICAMP

                 Fluxo de Dados: fluxos de escrita



•• Posição de escrita:
   Posição de escrita:
     – Seqüencial ou aleatório
     – Seqüencial ou aleatório
•• Comprimento:
   Comprimento:
     – Praticamente ilimitado
     – Praticamente ilimitado
•• Envio de dados:
   Envio de dados:
     – Bloqueante ou não bloqueante
     – Bloqueante ou não bloqueante


8/6/2009 10:26                                       27
Curso C - IC/UNICAMP

                 Fluxo de Dados: leitura e escrita



•• Posição de leitura ou escrita:
   Posição de leitura ou escrita:
     – Sempre aleatório
     – Sempre aleatório




8/6/2009 10:26                                       28
Curso C - IC/UNICAMP

                  Fluxo de Dados: leitura e escrita



•• Posição de leitura ou escrita:
   Posição de leitura ou escrita:
     – Sempre aleatório
     – Sempre aleatório
•• Comprimento:
   Comprimento:
     – Praticamente ilimitado
     – Praticamente ilimitado




8/6/2009 10:26                                        29
Curso C - IC/UNICAMP

                  Fluxo de Dados: leitura e escrita



•• Posição de leitura ou escrita:
   Posição de leitura ou escrita:
     – Sempre aleatório
     – Sempre aleatório
•• Comprimento:
   Comprimento:
     – Praticamente ilimitado
     – Praticamente ilimitado
•• Envio de dados:
   Envio de dados:
     – Bloqueante ou não bloqueante
     – Bloqueante ou não bloqueante


8/6/2009 10:26                                        30
Curso C - IC/UNICAMP

                 Fluxo de Dados: peculiaridades


•• Fluxo binário
   Fluxo binário




8/6/2009 10:26                                    31
Curso C - IC/UNICAMP

                 Fluxo de Dados: peculiaridades


••   Fluxo binário
     Fluxo binário
••   Fluxo texto
     Fluxo texto
     – Reconhecimento de ‘n’
     – Reconhecimento de ‘n’
     – Traduções automáticas de símbolos
     – Traduções automáticas de símbolos
     – Tratamento automático de símbolo EOF
     – Tratamento automático de símbolo EOF



8/6/2009 10:26                                    32
Curso C - IC/UNICAMP

                 Fluxo de Dados: operações


1. Abrir (estabelecer) o fluxo
1. Abrir (estabelecer) o fluxo
     •• Define operações permitidas
        Define operações permitidas
     •• Especifica tipo de fluxo (binário/texto)
        Especifica tipo de fluxo (binário/texto)
     •• Tipo de acesso (seqüencial ou aleatório)
        Tipo de acesso (seqüencial ou aleatório)




8/6/2009 10:26                                       33
Curso C - IC/UNICAMP

                 Fluxo de Dados: operações


1. Abrir (estabelecer) o fluxo
1. Abrir (estabelecer) o fluxo
     •• Define operações permitidas
        Define operações permitidas
     •• Especifica tipo de fluxo (binário/texto)
        Especifica tipo de fluxo (binário/texto)
     •• Tipo de acesso (seqüencial ou aleatório)
        Tipo de acesso (seqüencial ou aleatório)
2. Ler e/ou escrever dados
2. Ler e/ou escrever dados



8/6/2009 10:26                                       34
Curso C - IC/UNICAMP

                 Fluxo de Dados: operações


1. Abrir (estabelecer) o fluxo
1. Abrir (estabelecer) o fluxo
     •• Define operações permitidas
        Define operações permitidas
     •• Especifica tipo de fluxo (binário/texto)
        Especifica tipo de fluxo (binário/texto)
     •• Tipo de acesso (seqüencial ou aleatório)
        Tipo de acesso (seqüencial ou aleatório)
2.
2.     Ler e/ou escrever dados
       Ler e/ou escrever dados
3.
3.     Fechar (terminar) o fluxo
       Fechar (terminar) o fluxo
     •• Libera recursos
        Libera recursos
     •• Permite uso do fluxo por outro programa
        Permite uso do fluxo por outro programa
8/6/2009 10:26                                       35
Comunicação e Arquivos


                 Acesso a arquivos




8/6/2009 10:26                       36
Curso C - IC/UNICAMP

                 Arquivos: tipos de dados


Declaração:
Declaração:
 FILE * arquivo;
  FILE * arquivo;

•• Define um fluxo para leitura e escrita em
   Define um fluxo para leitura e escrita em
   arquivo.
   arquivo.
•• Cada variável declarada é fluxo independente
   Cada variável declarada é fluxo independente
•• Não é relevante como funciona o tipo FILE *
   Não é relevante como funciona o tipo FILE *

8/6/2009 10:26                                    37
Curso C - IC/UNICAMP

                 Arquivos: abrir e fechar


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




8/6/2009 10:26                                  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




8/6/2009 10:26                                        39
Curso C - IC/UNICAMP

                       Arquivos: abrir e fechar


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

 • Unidade de disco e diretório            “r”     “r+”
 • Caminho Relativo                        “w”     “w+”
 • Nome do arquivo                         “a”     “a+”

                                           “b”: binário
                                           “t”: texto

8/6/2009 10:26                                        40
Curso C - IC/UNICAMP

                       Arquivos: abrir e fechar


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

 • Unidade de disco e diretório            “r”     “r+”
 • Caminho Relativo                        “w”     “w+”
 • Nome do arquivo                         “a”     “a+”

 fclose(arquivo);                          “b”: binário
                                           “t”: texto

8/6/2009 10:26                                        41
Curso C - IC/UNICAMP

                 Arquivos: abrir e fechar



   FILE *arquivo;
   FILE *arquivo;
   arquivo = fopen(“alunos.txt”, “r”);
   arquivo = fopen(“alunos.txt”, “r”);
   ...
   ...
   // Lê o nome de todos os alunos
   // Lê o nome de todos os alunos
   ...
   ...
   fclose(arquivo);
   fclose(arquivo);

8/6/2009 10:26                                  42
Curso C - IC/UNICAMP

                    Arquivos: leitura


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

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




8/6/2009 10:26                                 43
Curso C - IC/UNICAMP

                                Arquivos: leitura


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

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


                 Semelhante a
                 scanf




8/6/2009 10:26                                             44
Curso C - IC/UNICAMP

                                  Arquivos: leitura


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

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


                 Semelhante a
                 scanf
                                %d, %f, %c, %s, etc


8/6/2009 10:26                                                      45
Curso C - IC/UNICAMP

                                  Arquivos: leitura


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

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

                                                         Lista de
                 Semelhante a
                                                         variáveis
                 scanf
                                %d, %f, %c, %s, etc


8/6/2009 10:26                                                       46
Curso C - IC/UNICAMP

                 Arquivos: leitura

Leitura:                   Arquivo:
                           Arquivo:
                           José 9.5
                           José 9.5     8.5
                                        8.5
                           Ana 7.0
                           Ana 7.0      8.0
                                        8.0
                           Paulo 3.5
                           Paulo 3.5    5.5
                                        5.5




8/6/2009 10:26                              47
Curso C - IC/UNICAMP

                     Arquivos: leitura

Leitura:                       Arquivo:
                               Arquivo:
   FILE *arquivo;
   FILE *arquivo;              José 9.5
                               José 9.5     8.5
                                            8.5
   char nome[30];
   char nome[30];              Ana 7.0
                               Ana 7.0      8.0
                                            8.0
   float nota1, nota2;
   float nota1, nota2;         Paulo 3.5
                               Paulo 3.5    5.5
                                            5.5

   arquivo = fopen(“alunos.txt”, “r”);
   arquivo = fopen(“alunos.txt”, “r”);
   ...
   ...
   // Lê o nome e nota do primeiro aluno
   // Lê o nome e nota do primeiro aluno
   fscanf(arquivo, “%s %f %f”, nome, &nota1,
   fscanf(arquivo, “%s %f %f”, nome, &nota1,
     &nota2);
     &nota2);
   ...
   ...
   fclose(arquivo);
   fclose(arquivo);
8/6/2009 10:26                                  48
Curso C - IC/UNICAMP

                    Arquivos: leitura


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

Ler um caractere:

Ler uma linha:




8/6/2009 10:26                                 49
Curso C - IC/UNICAMP

                       Arquivos: leitura


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

Ler um caractere:   c = fgetc(arquivo);

Ler uma linha:




8/6/2009 10:26                                    50
Curso C - IC/UNICAMP

                       Arquivos: leitura


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

Ler um caractere:   c = fgetc(arquivo);

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




8/6/2009 10:26                                    51
Curso C - IC/UNICAMP

                              Arquivos: leitura


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

Ler um caractere:        c = fgetc(arquivo);

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


variável para armazenar conteúdo


8/6/2009 10:26                                           52
Curso C - IC/UNICAMP

                              Arquivos: leitura


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

Ler um caractere:        c = fgetc(arquivo);

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

                                            Tamanho
variável para armazenar conteúdo            máximo


8/6/2009 10:26                                           53
Curso C - IC/UNICAMP

                 Arquivos: leitura
                           Arquivo:
                           Arquivo:
                           Prezado cliente,
                           Prezado cliente,
                           Gostaríamos de...
                           Gostaríamos de...




8/6/2009 10:26                              54
Curso C - IC/UNICAMP

                        Arquivos: leitura
                                  Arquivo:
                                  Arquivo:
                                  Prezado cliente,
                                  Prezado cliente,
       FILE *arquivo;             Gostaríamos de...
                                  Gostaríamos de...
       FILE *arquivo;
       char linha1[102], linha2[102];
       char linha1[102], linha2[102];

       arquivo = fopen(“mensagem.txt”, “r”);
       arquivo = fopen(“mensagem.txt”, “r”);
       ...
       ...
       fgets(linha1, 100, arquivo);
       fgets(linha1, 100, arquivo);
       fgets(linha2, 100, arquivo);
       fgets(linha2, 100, arquivo);
       ...
       ...
       fclose(arquivo);
       fclose(arquivo);
8/6/2009 10:26                                       55
Curso C - IC/UNICAMP

                          Arquivos: leitura
                                  Arquivo:
                                  Arquivo:
                                  Prezado cliente,
                                  Prezado cliente,
       FILE *arquivo;             Gostaríamos de...
                                  Gostaríamos de...
       FILE *arquivo;
       char linha1[102], linha2[102];
       char linha1[102], linha2[102];

       arquivo = fopen(“mensagem.txt”, “r”);
       arquivo = fopen(“mensagem.txt”, “r”);
       ...
       ...
       fgets(linha1, 100, arquivo);
       fgets(linha1, 100, arquivo);
       fgets(linha2, 100, arquivo);
       fgets(linha2, 100, arquivo);
       ...
       ...
       fclose(arquivo); linha1← “Prezado cliente,”
       fclose(arquivo); linha1← “Prezado cliente,”
                         linha2← “Gostaríamos de...”
                          linha2← “Gostaríamos de...”
8/6/2009 10:26                                          56
Curso C - IC/UNICAMP

                   Arquivos: fim de arquivo


      FILE *arquivo;
      arquivo = fopen(“mensagem.txt”, “r”);
      ...
      while (! eof(arquivo)) {
           ...
           Operação de leitura
           ...
      }
      ...
      fclose(arquivo);

8/6/2009 10:26                                    57
Curso C - IC/UNICAMP

                      Arquivos: fim de arquivo


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

arquivo = fopen(“notas.txt”, “r”);
...
while (! eof(arquivo)) {
    q = fscanf(arquivo, “%s %f %f”,nome,&nota1,&nota2);
    if (q == 0) break;
    ...
}
...
fclose(arquivo);
8/6/2009 10:26                                        58
Curso C - IC/UNICAMP

                   Arquivos: escrita


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

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




8/6/2009 10:26                                 59
Curso C - IC/UNICAMP

                                Arquivos: escrita


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

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


                 Semelhante a
                 printf




8/6/2009 10:26                                             60
Curso C - IC/UNICAMP

                                Arquivos: escrita


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

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


                 Semelhante a
                 printf
                                       %d, %f, %c, %s, etc


8/6/2009 10:26                                               61
Curso C - IC/UNICAMP

                                Arquivos: escrita


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

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

                                                 Lista de
                 Semelhante a
                                                 variáveis
                 printf
                                       %d, %f, %c, %s, etc


8/6/2009 10:26                                               62
Curso C - IC/UNICAMP

                         Arquivos: escrita


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

    arquivo = fopen(“alunos.txt”, “w”);
    arquivo = fopen(“alunos.txt”, “w”);
    ...
    ...
    // Escreve nome e nota do primeiro aluno
    // Escreve nome e nota do primeiro aluno
    fprintf(arquivo,“%s %f %f”,nome,nota1, nota2);
     fprintf(arquivo,“%s %f %f”,nome,nota1, nota2);
    ...
    ...
    fclose(arquivo);
    fclose(arquivo);
8/6/2009 10:26                                         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:



8/6/2009 10:26                                       64
Curso C - IC/UNICAMP

                          Arquivos: escrita


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

 Escrever um caractere:       fputc(c, arquivo);

 Escrever um texto:

 Garantir escrita no disco:



8/6/2009 10:26                                        65
Curso C - IC/UNICAMP

                          Arquivos: escrita


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

 Escrever um caractere:       fputc(c, arquivo);

 Escrever um texto:   fputs(linha, arquivo);

 Garantir escrita no disco:



8/6/2009 10:26                                        66
Curso C - IC/UNICAMP

                          Arquivos: escrita


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

 Escrever um caractere:       fputc(c, arquivo);

 Escrever um texto:   fputs(linha, arquivo);

 Garantir escrita no disco:    fflush(arquivo);



8/6/2009 10:26                                        67
Curso C - IC/UNICAMP

                       Arquivos: escrita


 FILE *arquivo;
 FILE *arquivo;

 arquivo = fopen(“mensagem.txt”, “w”);
 arquivo = fopen(“mensagem.txt”, “w”);
 ...
 ...
 fprintf(arquivo, “Resultado da operacao:n”);
 fprintf(arquivo, “Resultado da operacao:n”);
 // ou:
 // ou:
 fputs(“Resultado da operacao:n”, arquivo);
 fputs(“Resultado da operacao:n”, arquivo);
 ...
 ...
 fclose(arquivo);
 fclose(arquivo);
8/6/2009 10:26                           Arquivos    68
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo:
Consultar a posição atual:
Avançar/Retroceder:



8/6/2009 10:26                                         69
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo: rewind(arquivo);
Consultar a posição atual:
Avançar/Retroceder:



8/6/2009 10:26                                         70
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo: rewind(arquivo);
Consultar a posição atual: p = ftell(arquivo);
Avançar/Retroceder:



8/6/2009 10:26                                         71
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo: rewind(arquivo);
Consultar a posição atual: p = ftell(arquivo);
Avançar/Retroceder:
 fseek(arquivo, deslocamento, referência);


8/6/2009 10:26                                         72
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo: rewind(arquivo);
Consultar a posição atual: p = ftell(arquivo);
Avançar/Retroceder:
 fseek(arquivo, deslocamento, referência);
positivo: avança
negativo: retrocede
8/6/2009 10:26                                         73
Curso C - IC/UNICAMP

                         Arquivos: deslocamentos


 FILE *arquivo;
 arquivo = fopen(nome, modo);
        obrigatório: “w+” ou “r+”

Voltar ao inicio do arquivo: rewind(arquivo);
Consultar a posição atual: p = ftell(arquivo);
Avançar/Retroceder:
 fseek(arquivo, deslocamento, referência);
positivo: avança
negativo: retrocede        SEEK_CUR, SEEK_END,
8/6/2009 10:26                      SEEK_SET             74
Comunicação e Arquivos


                 Entrada/Saída Padrão




8/6/2009 10:26                          75
Curso C - IC/UNICAMP

                 Entrada/Saída Padrão


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




8/6/2009 10:26                                76
Curso C - IC/UNICAMP

                   Entrada/Saída Padrão


•• Três arquivos abertos automaticamente:
   Três arquivos abertos automaticamente:
     – stdin: entrada padrão (teclado)
     – stdin: entrada padrão (teclado)




8/6/2009 10:26                                         77
Curso C - IC/UNICAMP

                   Entrada/Saída Padrão


•• Três arquivos abertos automaticamente:
   Três arquivos abertos automaticamente:
     – stdin: entrada padrão (teclado)
     – stdin: entrada padrão (teclado)
     – stdout: saída padrão (terminal/tela DOS)
     – stdout: saída padrão (terminal/tela DOS)




8/6/2009 10:26                                      78
Curso C - IC/UNICAMP

                   Entrada/Saída Padrão


•• Três arquivos abertos automaticamente:
   Três arquivos abertos automaticamente:
     – stdin: entrada padrão (teclado)
     – stdin: entrada padrão (teclado)
     – stdout: saída padrão (terminal/tela DOS)
     – stdout: saída padrão (terminal/tela DOS)
     – stderr: saída de erro (terminal/tela DOS)
     – stderr: saída de erro (terminal/tela DOS)




8/6/2009 10:26                                       79
Curso C - IC/UNICAMP

                    Entrada/Saída Padrão


•• Três arquivos abertos automaticamente:
   Três arquivos abertos automaticamente:
     – stdin: entrada padrão (teclado)
     – stdin: entrada padrão (teclado)
     – stdout: saída padrão (terminal/tela DOS)
     – stdout: saída padrão (terminal/tela DOS)
     – stderr: saída de erro (terminal/tela DOS)
     – stderr: saída de erro (terminal/tela DOS)
•• Equivalentes:
   Equivalentes:
          printf(“texto”);
          printf(“texto”);
          fprintf(stdout, “texto”);
          fprintf(stdout, “texto”);

8/6/2009 10:26                                       80
Comunicação e Arquivos


           FormatArq




8/6/2009 10:26               81

Más contenido relacionado

Similar a Cap16 Arquivos Slides

Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoClaudio Arkan
 
Testes de software(feed_back)
Testes de software(feed_back)Testes de software(feed_back)
Testes de software(feed_back)Ramon Tanoeiro
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosJoseVieira75
 
TV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViTV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViLucas Augusto Carvalho
 
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...Ricardo Leite
 
Aula de introdução s.o ifba
Aula de introdução  s.o   ifbaAula de introdução  s.o   ifba
Aula de introdução s.o ifbaMatheus Brito
 
Impress - SóNia Cerqueira, nº 6937
Impress - SóNia Cerqueira, nº 6937Impress - SóNia Cerqueira, nº 6937
Impress - SóNia Cerqueira, nº 6937soniacerqueira
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionaisSuperTec1
 
Farmácia na TV: Informações interativas de preço de medicamentos
Farmácia na TV: Informações interativas de preço de medicamentosFarmácia na TV: Informações interativas de preço de medicamentos
Farmácia na TV: Informações interativas de preço de medicamentosmercuriocfg
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoMonike Santos
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dadosvaniakenob
 
Material Algoritmos e Estruturas de Dados - 1º Bimestre
Material Algoritmos e Estruturas de Dados - 1º BimestreMaterial Algoritmos e Estruturas de Dados - 1º Bimestre
Material Algoritmos e Estruturas de Dados - 1º BimestreElaine Cecília Gatto
 

Similar a Cap16 Arquivos Slides (20)

Introducao clp
Introducao clpIntroducao clp
Introducao clp
 
Introducao clp
Introducao clpIntroducao clp
Introducao clp
 
Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançado
 
Rockwell
RockwellRockwell
Rockwell
 
Windows 8
Windows 8Windows 8
Windows 8
 
Testes de software(feed_back)
Testes de software(feed_back)Testes de software(feed_back)
Testes de software(feed_back)
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
TV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViTV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouVi
 
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...
PRODUCT LINE UML SYSTEM Uma aplicabilidade de desenvolvimento de uma linha de...
 
Aula de introdução s.o ifba
Aula de introdução  s.o   ifbaAula de introdução  s.o   ifba
Aula de introdução s.o ifba
 
Impress - SóNia Cerqueira, nº 6937
Impress - SóNia Cerqueira, nº 6937Impress - SóNia Cerqueira, nº 6937
Impress - SóNia Cerqueira, nº 6937
 
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
[Cliqueapostilas.com.br] arquitetura-de-sistemas-operacionais
 
Lab view(cap.2)
Lab view(cap.2)Lab view(cap.2)
Lab view(cap.2)
 
Farmácia na TV: Informações interativas de preço de medicamentos
Farmácia na TV: Informações interativas de preço de medicamentosFarmácia na TV: Informações interativas de preço de medicamentos
Farmácia na TV: Informações interativas de preço de medicamentos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Aula 06 softwares
Aula 06   softwaresAula 06   softwares
Aula 06 softwares
 
Aula01 so
Aula01 soAula01 so
Aula01 so
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dados
 
Material Algoritmos e Estruturas de Dados - 1º Bimestre
Material Algoritmos e Estruturas de Dados - 1º BimestreMaterial Algoritmos e Estruturas de Dados - 1º Bimestre
Material Algoritmos e Estruturas de Dados - 1º Bimestre
 

Último

Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 

Último (20)

Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 

Cap16 Arquivos Slides

  • 1. Curso de C Comunicação e Arquivos 8/6/2009 10:26 @ Arnaldo V Moura, Daniel F. Ferber 1
  • 2. Curso C - IC/UNICAMP Tipos Avançados de Dados Roteiro: • Fluxos de Dados • Arquivos – Abrir/Fechar – Ler/Escrever – Outras operações • Entrada/Saída Padrão 8/6/2009 10:26 2
  • 3. Comunicação e Arquivos Modelo de Fluxo de Dados 8/6/2009 10:26 3
  • 4. Curso C - IC/UNICAMP Fluxo de Dados: definição É a comunicação entre o programa e outras entidades: É a comunicação entre o programa e outras entidades: – Teclado – Teclado – Terminal/prompt DOS – Terminal/prompt DOS – Arquivos – Arquivos – Conexões de rede, Bluetooth – Conexões de rede, Bluetooth – Impressoras – Impressoras – Portas seriais, USB, infra-vermelho – Portas seriais, USB, infra-vermelho – Outros programas – Outros programas 8/6/2009 10:26 4
  • 5. Curso C - IC/UNICAMP Fluxo de Dados: vantagens Modelo de comunicação genérico e unificado: Modelo de comunicação genérico e unificado: – Qualquer dispositivo parece funcionar da – Qualquer dispositivo parece funcionar da “mesma maneira”. “mesma maneira”. – Programas mais simples. – Programas mais simples. – Independência de plataforma e sistema – Independência de plataforma e sistema operacional. operacional. 8/6/2009 10:26 5
  • 6. Curso C - IC/UNICAMP Fluxo de Dados: modelo •• Produtor: escreve no fluxo Produtor: escreve no fluxo 8/6/2009 10:26 6
  • 7. Curso C - IC/UNICAMP Fluxo de Dados: modelo •• Produtor: escreve no fluxo Produtor: escreve no fluxo •• Consumidor: lê do fluxo Consumidor: lê do fluxo 8/6/2009 10:26 7
  • 8. Curso C - IC/UNICAMP Fluxo de Dados: modelo •• Produtor: escreve no fluxo Produtor: escreve no fluxo •• Consumidor: lê do fluxo Consumidor: lê do fluxo •• Fluxo: fila de entrega de dados Fluxo: fila de entrega de dados – O fluxo preserva a ordem – O fluxo preserva a ordem – Produtor e consumidor operam em ritmos diferentes – Produtor e consumidor operam em ritmos diferentes 8/6/2009 10:26 8
  • 9. Curso C - IC/UNICAMP Fluxo de Dados: modelo •• Produtor: escreve no fluxo Produtor: escreve no fluxo •• Consumidor: lê do fluxo Consumidor: lê do fluxo •• Fluxo: fila de entrega de dados Fluxo: fila de entrega de dados – O fluxo preserva a ordem – O fluxo preserva a ordem – Produtor e consumidor operam em ritmos diferentes – Produtor e consumidor operam em ritmos diferentes Escreve Lê Produtor Produtor Fluxo Consumidor Consumidor 8/6/2009 10:26 9
  • 10. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser consumidor! No fluxo, o programa pode ser consumidor! Teclado Teclado (produtor) (produtor) Programa Programa (consumidor) (consumidor) Arquivo Arquivo (produtor) (produtor) 8/6/2009 10:26 10
  • 11. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser consumidor! No fluxo, o programa pode ser consumidor! Teclado Teclado (produtor) Tecla (produtor) s pre ssion adas Programa Programa (consumidor) (consumidor) Arquivo Arquivo (produtor) (produtor) 8/6/2009 10:26 11
  • 12. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser consumidor! No fluxo, o programa pode ser consumidor! Teclado Teclado (produtor) Tecla (produtor) s pre ssion adas Programa Programa (consumidor) (consumidor) s Arquivo Dado Arquivo (produtor) (produtor) 8/6/2009 10:26 12
  • 13. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser produtor! No fluxo, o programa pode ser produtor! Arquivo Arquivo (consumidor) (consumidor) Programa Programa (produtor) (produtor) Tela DOS Tela DOS (consumidor) (consumidor) 8/6/2009 10:26 13
  • 14. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser produtor! No fluxo, o programa pode ser produtor! Arquivo Arquivo (consumidor) (consumidor) s Dado Programa Programa (produtor) (produtor) Tela DOS Tela DOS (consumidor) (consumidor) 8/6/2009 10:26 14
  • 15. Curso C - IC/UNICAMP Fluxo de Dados: exemplo •• No fluxo, o programa pode ser produtor! No fluxo, o programa pode ser produtor! Arquivo Arquivo (consumidor) (consumidor) s Dado Programa Programa (produtor) (produtor) Resu ltado s Tela DOS Tela DOS (consumidor) (consumidor) 8/6/2009 10:26 15
  • 16. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Programa Programa (produtor) (produtor) (consumidor) (consumidor) 8/6/2009 10:26 16
  • 17. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Teclas pressionadas Programa Programa (produtor) (produtor) (consumidor) (consumidor) 8/6/2009 10:26 17
  • 18. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Teclas pressionadas Programa Programa (produtor) (produtor) (consumidor) (consumidor) •• Somente escrita Somente escrita Impressora Impressora Programa Programa (consumidor) (consumidor) (produtor) (produtor) 8/6/2009 10:26 18
  • 19. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Teclas pressionadas Programa Programa (produtor) (produtor) (consumidor) (consumidor) •• Somente escrita Somente escrita Impressora Impressora Dados Programa Programa (consumidor) (consumidor) (produtor) (produtor) 8/6/2009 10:26 19
  • 20. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Teclas pressionadas Programa Programa (produtor) (produtor) (consumidor) (consumidor) •• Somente escrita Somente escrita Impressora Impressora Dados Programa Programa (consumidor) (consumidor) (produtor) (produtor) •• Leitura e escrita Leitura e escrita Arquivo Arquivo Programa Programa (produtor e (produtor e (produtor e (produtor e consumidor) consumidor) consumidor) consumidor) 8/6/2009 10:26 20
  • 21. Curso C - IC/UNICAMP Fluxo de Dados: tipos •• Somente leitura Somente leitura Teclado Teclado Teclas pressionadas Programa Programa (produtor) (produtor) (consumidor) (consumidor) •• Somente escrita Somente escrita Impressora Impressora Dados Programa Programa (consumidor) (consumidor) (produtor) (produtor) •• Leitura e escrita Leitura e escrita Arquivo Arquivo Programa Programa (produtor e (produtor e Conteúdo (produtor e (produtor e consumidor) consumidor) consumidor) consumidor) 8/6/2009 10:26 21
  • 22. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de leitura •• Posição de leitura: Posição de leitura: – Seqüencial ou aleatório – Seqüencial ou aleatório 8/6/2009 10:26 22
  • 23. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de leitura •• Posição de leitura: Posição de leitura: – Seqüencial ou aleatório – Seqüencial ou aleatório •• Comprimento: Comprimento: – Limitado ou ilimitado – Limitado ou ilimitado – Marcas BOF & EOF – Marcas BOF & EOF 8/6/2009 10:26 23
  • 24. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de leitura •• Posição de leitura: Posição de leitura: – Seqüencial ou aleatório – Seqüencial ou aleatório •• Comprimento: Comprimento: – Limitado ou ilimitado – Limitado ou ilimitado – Marcas BOF & EOF – Marcas BOF & EOF •• Recebimento de dados: Recebimento de dados: – Bloqueante ou não bloqueante – Bloqueante ou não bloqueante 8/6/2009 10:26 24
  • 25. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de escrita •• Posição de escrita: Posição de escrita: – Seqüencial ou aleatório – Seqüencial ou aleatório 8/6/2009 10:26 25
  • 26. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de escrita •• Posição de escrita: Posição de escrita: – Seqüencial ou aleatório – Seqüencial ou aleatório •• Comprimento: Comprimento: – Praticamente ilimitado – Praticamente ilimitado 8/6/2009 10:26 26
  • 27. Curso C - IC/UNICAMP Fluxo de Dados: fluxos de escrita •• Posição de escrita: Posição de escrita: – Seqüencial ou aleatório – Seqüencial ou aleatório •• Comprimento: Comprimento: – Praticamente ilimitado – Praticamente ilimitado •• Envio de dados: Envio de dados: – Bloqueante ou não bloqueante – Bloqueante ou não bloqueante 8/6/2009 10:26 27
  • 28. Curso C - IC/UNICAMP Fluxo de Dados: leitura e escrita •• Posição de leitura ou escrita: Posição de leitura ou escrita: – Sempre aleatório – Sempre aleatório 8/6/2009 10:26 28
  • 29. Curso C - IC/UNICAMP Fluxo de Dados: leitura e escrita •• Posição de leitura ou escrita: Posição de leitura ou escrita: – Sempre aleatório – Sempre aleatório •• Comprimento: Comprimento: – Praticamente ilimitado – Praticamente ilimitado 8/6/2009 10:26 29
  • 30. Curso C - IC/UNICAMP Fluxo de Dados: leitura e escrita •• Posição de leitura ou escrita: Posição de leitura ou escrita: – Sempre aleatório – Sempre aleatório •• Comprimento: Comprimento: – Praticamente ilimitado – Praticamente ilimitado •• Envio de dados: Envio de dados: – Bloqueante ou não bloqueante – Bloqueante ou não bloqueante 8/6/2009 10:26 30
  • 31. Curso C - IC/UNICAMP Fluxo de Dados: peculiaridades •• Fluxo binário Fluxo binário 8/6/2009 10:26 31
  • 32. Curso C - IC/UNICAMP Fluxo de Dados: peculiaridades •• Fluxo binário Fluxo binário •• Fluxo texto Fluxo texto – Reconhecimento de ‘n’ – Reconhecimento de ‘n’ – Traduções automáticas de símbolos – Traduções automáticas de símbolos – Tratamento automático de símbolo EOF – Tratamento automático de símbolo EOF 8/6/2009 10:26 32
  • 33. Curso C - IC/UNICAMP Fluxo de Dados: operações 1. Abrir (estabelecer) o fluxo 1. Abrir (estabelecer) o fluxo •• Define operações permitidas Define operações permitidas •• Especifica tipo de fluxo (binário/texto) Especifica tipo de fluxo (binário/texto) •• Tipo de acesso (seqüencial ou aleatório) Tipo de acesso (seqüencial ou aleatório) 8/6/2009 10:26 33
  • 34. Curso C - IC/UNICAMP Fluxo de Dados: operações 1. Abrir (estabelecer) o fluxo 1. Abrir (estabelecer) o fluxo •• Define operações permitidas Define operações permitidas •• Especifica tipo de fluxo (binário/texto) Especifica tipo de fluxo (binário/texto) •• Tipo de acesso (seqüencial ou aleatório) Tipo de acesso (seqüencial ou aleatório) 2. Ler e/ou escrever dados 2. Ler e/ou escrever dados 8/6/2009 10:26 34
  • 35. Curso C - IC/UNICAMP Fluxo de Dados: operações 1. Abrir (estabelecer) o fluxo 1. Abrir (estabelecer) o fluxo •• Define operações permitidas Define operações permitidas •• Especifica tipo de fluxo (binário/texto) Especifica tipo de fluxo (binário/texto) •• Tipo de acesso (seqüencial ou aleatório) Tipo de acesso (seqüencial ou aleatório) 2. 2. Ler e/ou escrever dados Ler e/ou escrever dados 3. 3. Fechar (terminar) o fluxo Fechar (terminar) o fluxo •• Libera recursos Libera recursos •• Permite uso do fluxo por outro programa Permite uso do fluxo por outro programa 8/6/2009 10:26 35
  • 36. Comunicação e Arquivos Acesso a arquivos 8/6/2009 10:26 36
  • 37. Curso C - IC/UNICAMP Arquivos: tipos de dados Declaração: Declaração: FILE * arquivo; FILE * arquivo; •• Define um fluxo para leitura e escrita em Define um fluxo para leitura e escrita em arquivo. arquivo. •• Cada variável declarada é fluxo independente Cada variável declarada é fluxo independente •• Não é relevante como funciona o tipo FILE * Não é relevante como funciona o tipo FILE * 8/6/2009 10:26 37
  • 38. Curso C - IC/UNICAMP Arquivos: abrir e fechar FILE *arquivo; arquivo = fopen(nome, modo); 8/6/2009 10:26 38
  • 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 8/6/2009 10:26 39
  • 40. Curso C - IC/UNICAMP Arquivos: abrir e fechar FILE *arquivo; arquivo = fopen(nome, modo); • Unidade de disco e diretório “r” “r+” • Caminho Relativo “w” “w+” • Nome do arquivo “a” “a+” “b”: binário “t”: texto 8/6/2009 10:26 40
  • 41. Curso C - IC/UNICAMP Arquivos: abrir e fechar FILE *arquivo; arquivo = fopen(nome, modo); • Unidade de disco e diretório “r” “r+” • Caminho Relativo “w” “w+” • Nome do arquivo “a” “a+” fclose(arquivo); “b”: binário “t”: texto 8/6/2009 10:26 41
  • 42. Curso C - IC/UNICAMP Arquivos: abrir e fechar FILE *arquivo; FILE *arquivo; arquivo = fopen(“alunos.txt”, “r”); arquivo = fopen(“alunos.txt”, “r”); ... ... // Lê o nome de todos os alunos // Lê o nome de todos os alunos ... ... fclose(arquivo); fclose(arquivo); 8/6/2009 10:26 42
  • 43. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; arquivo = fopen(nome, modo); fscanf(arquivo, “fomato”, &variavel); 8/6/2009 10:26 43
  • 44. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; arquivo = fopen(nome, modo); fscanf(arquivo, “fomato”, &variavel); Semelhante a scanf 8/6/2009 10:26 44
  • 45. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; arquivo = fopen(nome, modo); fscanf(arquivo, “fomato”, &variavel); Semelhante a scanf %d, %f, %c, %s, etc 8/6/2009 10:26 45
  • 46. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; arquivo = fopen(nome, modo); fscanf(arquivo, “fomato”, &variavel); Lista de Semelhante a variáveis scanf %d, %f, %c, %s, etc 8/6/2009 10:26 46
  • 47. Curso C - IC/UNICAMP Arquivos: leitura Leitura: Arquivo: Arquivo: José 9.5 José 9.5 8.5 8.5 Ana 7.0 Ana 7.0 8.0 8.0 Paulo 3.5 Paulo 3.5 5.5 5.5 8/6/2009 10:26 47
  • 48. Curso C - IC/UNICAMP Arquivos: leitura Leitura: Arquivo: Arquivo: FILE *arquivo; FILE *arquivo; José 9.5 José 9.5 8.5 8.5 char nome[30]; char nome[30]; Ana 7.0 Ana 7.0 8.0 8.0 float nota1, nota2; float nota1, nota2; Paulo 3.5 Paulo 3.5 5.5 5.5 arquivo = fopen(“alunos.txt”, “r”); arquivo = fopen(“alunos.txt”, “r”); ... ... // Lê o nome e nota do primeiro aluno // Lê o nome e nota do primeiro aluno fscanf(arquivo, “%s %f %f”, nome, &nota1, fscanf(arquivo, “%s %f %f”, nome, &nota1, &nota2); &nota2); ... ... fclose(arquivo); fclose(arquivo); 8/6/2009 10:26 48
  • 49. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; char c, linha[102]; arquivo = fopen(nome, modo); Ler um caractere: Ler uma linha: 8/6/2009 10:26 49
  • 50. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; char c, linha[102]; arquivo = fopen(nome, modo); Ler um caractere: c = fgetc(arquivo); Ler uma linha: 8/6/2009 10:26 50
  • 51. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; char c, linha[102]; arquivo = fopen(nome, modo); Ler um caractere: c = fgetc(arquivo); Ler uma linha: fgets(linha, 100, arquivo); 8/6/2009 10:26 51
  • 52. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; char c, linha[102]; arquivo = fopen(nome, modo); Ler um caractere: c = fgetc(arquivo); Ler uma linha: fgets(linha, 100, arquivo); variável para armazenar conteúdo 8/6/2009 10:26 52
  • 53. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; char c, linha[102]; arquivo = fopen(nome, modo); Ler um caractere: c = fgetc(arquivo); Ler uma linha: fgets(linha, 100, arquivo); Tamanho variável para armazenar conteúdo máximo 8/6/2009 10:26 53
  • 54. Curso C - IC/UNICAMP Arquivos: leitura Arquivo: Arquivo: Prezado cliente, Prezado cliente, Gostaríamos de... Gostaríamos de... 8/6/2009 10:26 54
  • 55. Curso C - IC/UNICAMP Arquivos: leitura Arquivo: Arquivo: Prezado cliente, Prezado cliente, FILE *arquivo; Gostaríamos de... Gostaríamos de... FILE *arquivo; char linha1[102], linha2[102]; char linha1[102], linha2[102]; arquivo = fopen(“mensagem.txt”, “r”); arquivo = fopen(“mensagem.txt”, “r”); ... ... fgets(linha1, 100, arquivo); fgets(linha1, 100, arquivo); fgets(linha2, 100, arquivo); fgets(linha2, 100, arquivo); ... ... fclose(arquivo); fclose(arquivo); 8/6/2009 10:26 55
  • 56. Curso C - IC/UNICAMP Arquivos: leitura Arquivo: Arquivo: Prezado cliente, Prezado cliente, FILE *arquivo; Gostaríamos de... Gostaríamos de... FILE *arquivo; char linha1[102], linha2[102]; char linha1[102], linha2[102]; arquivo = fopen(“mensagem.txt”, “r”); arquivo = fopen(“mensagem.txt”, “r”); ... ... fgets(linha1, 100, arquivo); fgets(linha1, 100, arquivo); fgets(linha2, 100, arquivo); fgets(linha2, 100, arquivo); ... ... fclose(arquivo); linha1← “Prezado cliente,” fclose(arquivo); linha1← “Prezado cliente,” linha2← “Gostaríamos de...” linha2← “Gostaríamos de...” 8/6/2009 10:26 56
  • 57. Curso C - IC/UNICAMP Arquivos: fim de arquivo FILE *arquivo; arquivo = fopen(“mensagem.txt”, “r”); ... while (! eof(arquivo)) { ... Operação de leitura ... } ... fclose(arquivo); 8/6/2009 10:26 57
  • 58. Curso C - IC/UNICAMP Arquivos: fim de arquivo FILE *arquivo; char nome[30]; float nota1, nota2; arquivo = fopen(“notas.txt”, “r”); ... while (! eof(arquivo)) { q = fscanf(arquivo, “%s %f %f”,nome,&nota1,&nota2); if (q == 0) break; ... } ... fclose(arquivo); 8/6/2009 10:26 58
  • 59. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); fprintf(arquivo, “texto”, &variavel); 8/6/2009 10:26 59
  • 60. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); fprintf(arquivo, “texto”, &variavel); Semelhante a printf 8/6/2009 10:26 60
  • 61. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); fprintf(arquivo, “texto”, &variavel); Semelhante a printf %d, %f, %c, %s, etc 8/6/2009 10:26 61
  • 62. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); fprintf(arquivo, “texto”, &variavel); Lista de Semelhante a variáveis printf %d, %f, %c, %s, etc 8/6/2009 10:26 62
  • 63. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; FILE *arquivo; char nome[30]; char nome[30]; float nota1, nota2; float nota1, nota2; arquivo = fopen(“alunos.txt”, “w”); arquivo = fopen(“alunos.txt”, “w”); ... ... // Escreve nome e nota do primeiro aluno // Escreve nome e nota do primeiro aluno fprintf(arquivo,“%s %f %f”,nome,nota1, nota2); fprintf(arquivo,“%s %f %f”,nome,nota1, nota2); ... ... fclose(arquivo); fclose(arquivo); 8/6/2009 10:26 63
  • 64. 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: 8/6/2009 10:26 64
  • 65. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); char c, texto[100]; Escrever um caractere: fputc(c, arquivo); Escrever um texto: Garantir escrita no disco: 8/6/2009 10:26 65
  • 66. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); char c, texto[100]; Escrever um caractere: fputc(c, arquivo); Escrever um texto: fputs(linha, arquivo); Garantir escrita no disco: 8/6/2009 10:26 66
  • 67. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); char c, texto[100]; Escrever um caractere: fputc(c, arquivo); Escrever um texto: fputs(linha, arquivo); Garantir escrita no disco: fflush(arquivo); 8/6/2009 10:26 67
  • 68. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; FILE *arquivo; arquivo = fopen(“mensagem.txt”, “w”); arquivo = fopen(“mensagem.txt”, “w”); ... ... fprintf(arquivo, “Resultado da operacao:n”); fprintf(arquivo, “Resultado da operacao:n”); // ou: // ou: fputs(“Resultado da operacao:n”, arquivo); fputs(“Resultado da operacao:n”, arquivo); ... ... fclose(arquivo); fclose(arquivo); 8/6/2009 10:26 Arquivos 68
  • 69. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: Consultar a posição atual: Avançar/Retroceder: 8/6/2009 10:26 69
  • 70. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: rewind(arquivo); Consultar a posição atual: Avançar/Retroceder: 8/6/2009 10:26 70
  • 71. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: rewind(arquivo); Consultar a posição atual: p = ftell(arquivo); Avançar/Retroceder: 8/6/2009 10:26 71
  • 72. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: rewind(arquivo); Consultar a posição atual: p = ftell(arquivo); Avançar/Retroceder: fseek(arquivo, deslocamento, referência); 8/6/2009 10:26 72
  • 73. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: rewind(arquivo); Consultar a posição atual: p = ftell(arquivo); Avançar/Retroceder: fseek(arquivo, deslocamento, referência); positivo: avança negativo: retrocede 8/6/2009 10:26 73
  • 74. Curso C - IC/UNICAMP Arquivos: deslocamentos FILE *arquivo; arquivo = fopen(nome, modo); obrigatório: “w+” ou “r+” Voltar ao inicio do arquivo: rewind(arquivo); Consultar a posição atual: p = ftell(arquivo); Avançar/Retroceder: fseek(arquivo, deslocamento, referência); positivo: avança negativo: retrocede SEEK_CUR, SEEK_END, 8/6/2009 10:26 SEEK_SET 74
  • 75. Comunicação e Arquivos Entrada/Saída Padrão 8/6/2009 10:26 75
  • 76. Curso C - IC/UNICAMP Entrada/Saída Padrão •• Três arquivos abertos automaticamente: Três arquivos abertos automaticamente: 8/6/2009 10:26 76
  • 77. Curso C - IC/UNICAMP Entrada/Saída Padrão •• Três arquivos abertos automaticamente: Três arquivos abertos automaticamente: – stdin: entrada padrão (teclado) – stdin: entrada padrão (teclado) 8/6/2009 10:26 77
  • 78. Curso C - IC/UNICAMP Entrada/Saída Padrão •• Três arquivos abertos automaticamente: Três arquivos abertos automaticamente: – stdin: entrada padrão (teclado) – stdin: entrada padrão (teclado) – stdout: saída padrão (terminal/tela DOS) – stdout: saída padrão (terminal/tela DOS) 8/6/2009 10:26 78
  • 79. Curso C - IC/UNICAMP Entrada/Saída Padrão •• Três arquivos abertos automaticamente: Três arquivos abertos automaticamente: – stdin: entrada padrão (teclado) – stdin: entrada padrão (teclado) – stdout: saída padrão (terminal/tela DOS) – stdout: saída padrão (terminal/tela DOS) – stderr: saída de erro (terminal/tela DOS) – stderr: saída de erro (terminal/tela DOS) 8/6/2009 10:26 79
  • 80. Curso C - IC/UNICAMP Entrada/Saída Padrão •• Três arquivos abertos automaticamente: Três arquivos abertos automaticamente: – stdin: entrada padrão (teclado) – stdin: entrada padrão (teclado) – stdout: saída padrão (terminal/tela DOS) – stdout: saída padrão (terminal/tela DOS) – stderr: saída de erro (terminal/tela DOS) – stderr: saída de erro (terminal/tela DOS) •• Equivalentes: Equivalentes: printf(“texto”); printf(“texto”); fprintf(stdout, “texto”); fprintf(stdout, “texto”); 8/6/2009 10:26 80
  • 81. Comunicação e Arquivos FormatArq 8/6/2009 10:26 81