Cap16 Arquivos Slides

642 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
642
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Cap16 Arquivos Slides

  1. 1. Curso de C Comunicação e Arquivos 8/6/2009 10:26 @ Arnaldo V Moura, Daniel F. Ferber 1
  2. 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. 3. Comunicação e Arquivos Modelo de Fluxo de Dados 8/6/2009 10:26 3
  4. 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. 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. 6. Curso C - IC/UNICAMP Fluxo de Dados: modelo •• Produtor: escreve no fluxo Produtor: escreve no fluxo 8/6/2009 10:26 6
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 31. Curso C - IC/UNICAMP Fluxo de Dados: peculiaridades •• Fluxo binário Fluxo binário 8/6/2009 10:26 31
  32. 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. 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. 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. 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. 36. Comunicação e Arquivos Acesso a arquivos 8/6/2009 10:26 36
  37. 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. 38. Curso C - IC/UNICAMP Arquivos: abrir e fechar FILE *arquivo; arquivo = fopen(nome, modo); 8/6/2009 10:26 38
  39. 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. 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. 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. 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. 43. Curso C - IC/UNICAMP Arquivos: leitura FILE *arquivo; arquivo = fopen(nome, modo); fscanf(arquivo, “fomato”, &variavel); 8/6/2009 10:26 43
  44. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 59. Curso C - IC/UNICAMP Arquivos: escrita FILE *arquivo; arquivo = fopen(nome, modo); fprintf(arquivo, “texto”, &variavel); 8/6/2009 10:26 59
  60. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 75. Comunicação e Arquivos Entrada/Saída Padrão 8/6/2009 10:26 75
  76. 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. 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. 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. 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. 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. 81. Comunicação e Arquivos FormatArq 8/6/2009 10:26 81

×