Visualizar:

▼ Postagens (3)
  • Claudia Leite e Belo Don Juan - Don Juan

    14

    Dez
    14/12/2011 às 09h49
  • Arquivo em diasco C.

    14

    Dez
    14/12/2011 às 09h45

    http://goulart.pro.br/arquivos.html

    ARQUIVOS EM DISCO

    Entrada e Saída


    STREAMS são usados para ler e escrever em C.
    Um STREAM pode ser uma dispositivo padrão do sistema ou um arquivo específico.
    STREAM texto, quando o sistema operacional manipula os dados antes de entregar ao programa C
    STREAM binário, não tem transformação pelo sistema operacional o que vem do Programa e vai para o arquivo é igual.
    Existem uma associação do STREAM ao arquivo na hora do open. Nem todos os arquivos suportam todas as operações.
    O Close desassocia o STREAM do arquivo e força a transferência da área de buffer para o arquivo.

    Funções que realizam E/S em console

     

    Getchar()   Lê um caracter do teclado; aguarda um enter

    Getche()    Lê um caracter com eco; não aguarda enter

    Getch()           Lê um caracter sem eco; não aguarda enter

    Putchar()   Escreve um caracter na tela

    Gets()            Lê um string do teclado

    Puts()            Escreve um string para a tela

    E/S  Formatada

    Printf()

    Scanf()

     

    E/S ANSI -- Stream/ Arquivo

     

    fopen()           Abre um STREAM (arquivo)

    fclose            fecha um STREAM (arquivo)

    putc()            Escreve um caracter

    getc()            Lê um caracter

    fseek()           Procura por um byte específico

    fprintf()   Igual ao printf() do console.

    fscanf()    Igual ao scanf() do console

    feof()            Retorna verdadeiro se encontrou fim arquivo

    ferror()    Retorna verdadeiro se ocorreu erro

    fread()           le um bloco de dados

    fwrite            escreve um bloco de dados

    rewind()    reposiciona o lacalizador no inicio do arquivo

    remove()    apaga um arquivo

    No Open de arquivos, Valores legais para o modo:

    "r"         abre um arquivo para leitura

    "w"         cria uma arquivo para escrita

    "a"         acrescenta dados a um arquivo já existente

    "rb"        abre um arquivo binário para leitura

    "wb"        cria um arquivo binário para escrita

    "ab"        acrescenta dados a um arq binário existente

    "r+"        abre um arquivo para leitura/escrita

    "w+"        cria um arquivo para leitura/escrita

    "a+"        acrescenta dados/cria um arq para leit/escrita

    "r+b"       abre um arquivo binario para leitura/escrita

    "w+b"       cria um arquivo binário para leitura/escrita

    "a+b"       acrescenta ou cria um arq bin para leit/escrita

    "rt"        abre um arquivo texto para leitura

    "wt"        cria um arquivo texto para leitura

    "at"        acrescenta dados a um arquivo texto

    "r+t"       abre um arquivo texto para leitura/escrita

    "w+t"       cria um arquivo texto para leitura/escrita

    "a+t"       acrescenta  ou cria arq. texto para leit/escrita

     

    Open de Arquivos


    protótipo da função: FILE *fopen(char *nome_de_arquivo, char *modo)

    FILE *fp;

    if ((fp=fopen("teste", "w")) == NULL)

    { puts("nao posso abrir o arquivon");

    exit(1);

    }

     

     

    Escrevendo um Caracter


    protótipo da função : int putc(int ch, FILE *fp);

    Lendo um Caracter


    protótipo da função : int getc(FILE *fp);

    ch = getc(fp);

    while (ch!=EOF)  {

    ch = getc(fp);

    }

     

    Encontrando fim de Arquivo


    Determina fim de arquivos para leitura binária (em especial).
    protótipo da função: int feof(FILE *fp);

    while (!feof(fp)) ch = getc(fp);

     

    Fechando um Arquivo


    protótipo da função: int fclose(FILE *fp);

    Função Erro e Rewind


    protótipo da função: int ferror(FILE *fp);
    void rewinf(FILE *fp);

    Exemplo de uso da funções de E/S

     

    /* Ktod - cria arquivo em disco..  */

    #include <stdio.h>

    #include <stdlib.h>

    main (int argc, char *argv[])

    {

    FILE *fp;

    char ch;

    if (argc !=2) { printf ("Falta nome do arquivo n");

    exit (1);

    }

    if ((fp=fopen (argv[1], "w")) == NULL)

    {

    printf ("o arquivo naopode ser aberton");

    exit (1);

    }

    do

    {

    ch = getchar ();

    if (EOF == putc(ch,fp))

    {

    printf("Erro no arquivo durante gravacao");

    break;

    }

    }

    while (ch!= '$');

    fclose (fp);

    return 0;

    }

     

    Exemplo de cópia de arquivos - disco

     

    /*  Copia de um arquivo   */

    /* COPYARQ copia  arquivo em disco..  */

    #include <stdio.h>

    #include <stdlib.h>

    main (int argc, char *argv[])

    {

    FILE *entr, *saida;

    char ch;

    if (argc !=3) { printf ("Falta nome do arquivo n");

    exit (1);

    }

    if ((entr=fopen (argv[1], "rb")) == NULL)

    {

    printf ("o arquivo entrada nao pode ser aberton");

    exit (1);

    }

    if ((saida=fopen (argv[2], "wb")) == NULL)

    {

    printf ("o arquivo saida nao pode ser aberton");

    exit (1);

    }

    /*  copiando o arquivo   */

    while(!feof(entr))

    {

    ch = getc (entr);

    if(ferror(entr)) {

    printf("erro lendo o arquivo");f

    break;

    }

    putc (ch, saida);

    if(ferror(saida)) {

    printf("erro na gravacao do arquivo");

    break;

    }

    }

    fclose (entr);

    fclose (saida);

    return 0;

    }

     

    Funções getw() e putw()


    São funções não padrão ANSI usadas para ler e escrever inteiros de e para arquivos em disco.

    protótipos:    int putw(int i, FILE *fp);

    int getw(FILE *fp);

     

    Funções fgets() e fputs()


    São funções para ler e escrever strings.

    protótipo :    char *fputs(char *str, FILE *fp);

    char *fgets(char *str, int tamanho, FILE *fp);

    Funções fread() e fwrite()


    São funções que permitem ler e gravar blocos de dados.

    protótipo :    unsigned fread(void *buffer, int num_bytes

    int count,FILE *fp);

    unsigned fwrite(void *buffer, int num_bytes,

    int count,FILE *fp);

     

    Função fseek()


    Para acesso randomico.
    protótipo : int fseek(FILE *fp, long numbytes, int origem);
    origem pode ser:

    Começo do arquivo   SEEK_SET    0

    Posição corrente          SEEK_CUR    1

    Fim do arquivo      SEEK_END    2

     

    Exemplo: Programa DUMP



    /*  DUMP :  Um utilitario para visualizar disco

    usando fseek  -   do livro Turbo C , Schildt

    pag. 228   */

    #include <stdio.h>

    #include <ctype.h> /* devido ao isprint() */

    #include <stdlib.h> /* devido ao exit() */

    #define TAMANHO 128

    char buf [TAMANHO];

    void display (int numlido);

    main (int argc, char *argv[])

    {

    FILE *fp;

    int setor, numlido;

    /* verifica num de argumentos */

    if (argc != 2)

    {

    printf("use: dump nome do arquivon");

    exit(1);

    }

    if ((fp=fopen(argv[1], "rb")) == NULL)

    {

    printf("o arquivo nao pode ser aberto n");

    exit (1);

    }

    for(;;)

    {

    printf("informe o setor (-1 para terminar): ");

    scanf("%ld", &setor);

    if(setor < 0) break;

    if(fseek(fp, setor*TAMANHO, SEEK_SET))

    printf("erro de buscan");

    if((numlido=fread(buf, 1, TAMANHO, fp)) != TAMANHO)

    printf("EOF encontrado n");

    display(numlido);

    }

    return 0;

    }

    /* funcao para exibir arquivo  */

    void display(int numlido)

    {

    int i, j;

    for(i=0; i< numlido/16; i++)

    {

    for (j=0; j<16; j++) printf("%3X", buf [i*16+j]);

    printf("|");

     

    for (j=0; j<16; j++)

    {

    if (isprint (buf [i*16 + j])) printf("%c",

    buf[i*16+j]);

    else printf(".");

    }

    printf("n");

    }

    }

     

    Site de origem: http://goulart.pro.br/arquivos.html

     

  • Algoritmo

    04

    Abr
    04/04/2011 às 11h16

    Algoritmo diz se você é maior ou menor de idade:

     

    // Função : diz se voce é maior ou menor de idade

    // Autor : Thaysa

    // Data : 17/4/2008

    // Seção de Declarações

    var

    idade1 : real

    nome : caractere

    inicio

    // Seção de comandos

    escreva(“Qual é o seu nome? “)

    leia (nome)

    escreva(“Digite sua idade : “)

    leia (idade1)

    se idade1 <=18 entao

    escreva(nome, ” você é menor de idade”)

    senao

    escreva(nome, ” você é maior de idade”)

    fimse

    fimalgoritmo

     

    Algoritmo calcula peso de bois:

     

    // Função : calcula peso entre bois

    // Autor : Thaysa

    // Data : 24/5/2009

    // Seção de Declarações

    // Seção de Declarações

    var

     

    menor, maior, peso: real

    i, cod_menor, cod_maior: inteiro

     

    inicio

    // Seção de Comandos

     

    limpatela

     

    menor<-10000

    maior<-0

     

    para i de 1 ate 9 faca

     

    escreva(“Digite o peso do boi”,i,”: “)

    leia(peso)

    se (peso

    menor<-peso

    cod_menor<-i fimse se (peso>maior)entao

    maior<-peso

    cod_maior<-i

    fimse

     

    fimpara

     

    escreval(“O boi”,cod_menor,”com”,menor,” Kg foi o mais leve”)

    escreval(“O boi”,cod_maior,”com”,maior,” Kg foi o mais pesado”)

     

    fimalgoritmo

     

    Algoritmo lê um nome e diz se corresponde ao seu:

     

    // Função : le um nome do teclado e diz sé igual ao seu nome.

    // Autor : THAYSA

    // Data : 1/5/2009

    // Seção de Declarações

    var

    nome : caractere

     

    inicio

    // Seção de Comandos

    Escreva (“Digite seu nome: “)

    leia (nome)

     

    se (nome) = “Thaysa” entao

    escreva (“Correto”)

    senao

    escreva (“Incorreto”)

    fimse

    fimalgoritmo

     

    Algoritmo identifica o tipo de triângulo:

     

    // Função : triangulos

    // Autor : Thaysa

    // Data : 13/5/2009

    // Seção de Declarações

    var

    a,b,c : real

    inicio

    // Seção de Comandos

    escreva(“entre com o valor de a: “)

    leia(a)

    escreva(“entre com o valor de b: “)

    leia(b)

    escreva(“entre com o valor de c: “)

    leia(c)

     

    se (A

    escreval(“Estes valores formam um triangulo”)

     

    se (A=B) e (B=C) entao

    escreva (“Triangulo Equilátero”)

    senao

    se (A=B) ou (B=C) ou (A=C) entao

    escreva (“Triângulo Isósceles”)

    senao

    escreva (“Triangulo Escaleno”)

    fimse

    fimse

    senao

    escreva (“Estes valores não formam um triângulo”)

    fimse

     

    fimalgoritmo

     

    Algoritmo calcula IMC:

     

    // Função : calcula IMC

    // Autor : Thaysa

    // Data : 29/4/2009

    // Seção de Declarações

    var

    numimc, peso, altura, somapesos : numerico

     

    inicio

    // Seção de Comandos

     

    Escreval (“Entre com o seu peso: “)

    leia (peso)

    Escreval (“Entre com a sua altura: “)

    leia (altura)

     

    somapesos <- (peso/altura^2)

    escreval (“seu imc é”, somapesos)

     

    fimalgoritmo

     

    Algoritmo lê três numeros reais e diz se ele é maior que a soma dos outros dois:

    // Função : Lê 3 numeros reais e verifica se o primeiro é maior que a soma dos outros dois

    // Autor : Thaysa

    // Data : 29/4/2009

    // Seção de Declarações

    var

    num1, num2, num3, total : numerico

     

    inicio

    // Seção de Comandos

    Escreva (“Digite um número : “)

    leia (num1)

    Escreva (“Digite outro número : “)

    leia (num2)

    Escreva (“Digite mais um número : “)

    leia (num3)

     

    total <- (num2+num3)

    se total <= num1 entao

    escreva (” Maior “)

    senao

    escreva (” Menor “)

    fimse

    fimalgoritmo

     

    Algoritmo que descobre a sua idade:

     

    // Função : descobre idade

    // Autor : Thaysa

    // Data : 24/5/2009

    // Seção de Declarações

    var

    nome : caractere

    idade, ano1, ano2 : numerico

    inicio

    // Seção de Comandos

    repita

    escreval (” digite o nome: “)

    leia (nome)

    escreval (“digite o ano de nascimento: “)

    leia (ano1)

    escreval (“digite o ano atual: “)

    leia (ano2)

    idade <-ano2 – ano1

    escreval (nome, idade)

    escreva

    ate idade=25

    fimalgoritmo

     

    Algoritmo que diz quanto você gastou comprando cigarros:

     

    // Função : diz quanto você gastou comprando cigarros

    // Autor : Thaysa

    // Data : 28/04/2009

    // Seção de Declarações

    var

    anos, cigdia : numerico

    cart, gasto : real

    inicio

    // Seção de Comandos

     

    Escreva (“N° de cigarros fumados por dia”)

    leia (numcigdia)

    Escreva (“Quantidade de anos que você fuma”)

    leia (numeanos)

    Escreva (“Preço do maço de cigarros”)

    leia (precocart)

     

    gastototal<- ((anos*365)*cigdia)*cart/20

    Escreva (“Você ja gastou um total de R$ “)

    Escreva (gasto)

    Escreva (” em maço de cigarros!”)

    fimalgoritmo

     

    Algoritmo calcula média entre alunos:

     

    // Função : calcula media

    // Autor : Thaysa

    // Data : 17/6/2009

    // Seção de Declarações

    var

    idade, Cont_H, Cont_M, idade_H, idade_M : inteiro

    sexo : caractere

    inicio

    idade 0 faca

     

    escreva (“Digite o Sexo, [H] ou [M]: “)

    leia(sexo)

    escreva (“Digite a idade: “)

    leia(idade)

     

    se sexo=”H” entao

    idade_H <- idade_H + idade

    Cont_H <- Cont_H + 1

    senao

    se sexo="M" entao

    idade_M <- idade_M + idade

    Cont_M <- Cont_M + 1

    fimse

    fimse

    fimenquanto

     

    escreval ("A media dos alunos de Sexo H é ", Idade_H/Cont_H)

    escreva ("A media dos alunos de Sexo M é ", Idade_M/Cont_M)

    fimalgoritmo

    Algoritmo calcula média de um aluno e dá resultado:

     

    // Função : calcula media e da resultado

    // Autor : Thaysa

    // Data : 13/4/2008

    // Seção de Declarações

    var

    n1, n2, n3, M : numerico

    nome : caractere

    inicio

    // Seção de Comandos

    escreva (“Qual seu nome? “)

    leia (nome)

    escreva (“Digite a primeira nota “)

    Leia (n1)

     

    escreva (“Digite a segunda nota “)

    Leia (n2)

     

    escreva (“Digite a terceira nota “)

    Leia (n3)

     

    Escreva (“As notas são”, n1)

    Escreva (“,”, n2)

    Escreva (” e”, n3)

     

    M =7 entao

    escreval (“Condição do aluno: Aprovado”)

    senao

    escreval (“Condição do aluno: Reprovado”)

    fimse

    Escreva (“”)

    fimalgoritmo

     

    Algoritmo lê um número e diz seu sucessor:

     

    // Função : le numero e diz sucessor

    // Autor : Thaysa

    // Data : 28/04/2009

    // Seção de Declarações

    var

    num, total : numerico

    inicio

    // Seção de Comandos

    escreva (“Digite um numero: “)

    leia (num)

    total <- (num+1)

    escreva (total)

    escreva (" é o seu sucessor")

    fimalgoritmo

     

    Algoritmo lê três números e põe em ordem crescente:

     

    // Função : ler 3 numeros e por em ordem crescente!

    // Autor :

    // Data : 19/05/2009

    // Seção de Declarações

    var

    a,b,c : numerico

    inicio

    // Seção de Comandos

    leia (a,b,c)

    se (a=b) ou (b=c) entao

    escreva (“Alguns ou todos os numeros sao iguais “)

    senao

     

    se (a<b) e (a<c) entao//a é menor

    se (b<c) entao

    escreva (a,b,c)

    senao escreva (a,c,b)

    fimse;

    fimse;

     

    se (b<a) e (b<c) entao//b é menor

    se (a<c) entao

    escreva (b,a,c)

    senao escreva (b,c,a)

    fimse

    fimse

     

    se (c<a) e (c<b) entao//c é menor

    se (a<b) entao

    escreva (c,a,b)

    senao escreva (c,b,a)

    fimse

    fimse

     

    fimse

    fimalgoritmo

     

    Algoritmo lê número e acrescenta 30% sobre ele:

     

    // Função : acrescenta 30% a um numero

    // Autor : Thaysa

    // Data : 07/05/2009

    // Seção de Declarações

    var

    num, percent: numerico

    inicio

    // Seção de Comandos

    escreva (“Digite um Valor “)

    leia (num)

    percent <- (num*(30/100))

    escreva ("Seu valor é ",percent)

     

    fimalgoritmo

Home |  Blog Grátis |  Hospedagem HTML Grátis |  Quem somos |  Parceria |  Anuncie |  Ajuda
Trabalhe no XPG |  Política de Privacidade |  Política de Segurança |  Denúncia © 2004-2012 XPG | Siga esta corrente