SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESpatriciasofiacunha18
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfpaulafernandes540558
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaFernanda Ledesma
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundonialb
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdfDemetrio Ccesa Rayme
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdfHABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdfdio7ff
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?MrciaRocha48
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 

Kürzlich hochgeladen (20)

QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdf
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 
A Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão LinguísticaA Inteligência Artificial na Educação e a Inclusão Linguística
A Inteligência Artificial na Educação e a Inclusão Linguística
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundo
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdfHABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.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