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