Escolar Documentos
Profissional Documentos
Cultura Documentos
rodrigo.piovesana@gmail.com Antes tarde do que mais tarde Estou muito bem obrigadoe vocs?
Rodrigo Csar Benaglia Piovesana Engenheiro de Computao - USF Especialista em Telecomunicaes - FGV Aluno Mestrado - Unicamp Especialidades: redes de computadores, segurana da informao, VoIP e PABX Hbridos. Desenvolvimento em C/C++ para controlar dispositivos (drivers), Programao Orientada objetos e UML. Diversas certificaes em Redes de dados, Voz, PABX, Contact Center e Segurana.
rodrigo.piovesana@gmail.com
Corinthiano ROXO!
rodrigo.piovesana@gmail.com
Rumo ao Bi-Mundial
rodrigo.piovesana@gmail.com
Bibliografia bsica
Algortmos Person Makron Books, 1998. Dirceu Douglas Salvetti e Lisbete Madsen Barbosa Linguagens de Programao Java, C, C++ e outras Campus, 2004. Flvio Varejo
rodrigo.piovesana@gmail.com
Bibliografia recomendada
Cincia dos Computadores Uma abordagem algortmica MacGraw-Hill, 1983. Jean Paul Tremblay e Richard B. Bunt C programao Campus, 1993. Steve Holzner e Peter Norton Treinamento em Linguagem C Curso completo 1 e 2 McGraw-hill, 1990. Victorine Viviane (j tem novas verso onde unificado os livros)
rodrigo.piovesana@gmail.com
Reviso bsica
Alguem aqui lembra a matria? Pelo menos o ttulo??? Quais foram os principais tpicos estudados? Eeeeee..eeeeeee..hummmm. No! Converso decimal <-> binrio <-> octal <-> hexadecimal Algortmos Descrio narrativa / Fluxograma Estruturas de deciso / Repetio Linguagem de programao C (comandos bsicos em laboratrio) Quais foram os exerccios executados? Quais foram os mais fceis e difceis? Porque? Qual a principal diferena entra executar um programa direto no computador e realizar um algortmo antes de ir para o pega-pracapar?
rodrigo.piovesana@gmail.com
Bsicamente representar a mesma informao em formatos diferentes. Por exemplo: 10 em decimal possui uma representao diferente em binrio, 1010. J em octal seria 12 e em Hexadecimal A. http://calculadoraonline.com.br/view/conversa o-binario.php
rodrigo.piovesana@gmail.com
Descrio Narrativa
Fim
rodrigo.piovesana@gmail.com
Pseudo-cdigo
a escrita do famoso Portugol, onde voc ir escrever o cdigo com palavras muito, MAS MUITO parecidas, com as utilizadas em algumas linguagens de programao. Se a<100
Seno
fim
rodrigo.piovesana@gmail.com
Linguagem C
Aqui o bicho pega!!!!! Temos N tipos de linguagens compatveis com C ANSI. Algumas so proprietrias ou implatanes melhoradas de C. http://en.wikipedia.org/wiki/ANSI_C C++ (plus plus) um C com classes(orientaao a objetos, etc) C# ISO/IEC 23270
rodrigo.piovesana@gmail.com
Sim, teremos 1 prova com 5 questes E sim teremos um projeto de concluso de curso, onde o objetivo desenvolver um aplicativo comercial anos anteriores j foram produzidos: sistemas para farmcias, hotis, livrarias, fbricas de transformao, etc, etc, etc talvez esse ano o projeto ser para administrao escolar
rodrigo.piovesana@gmail.com
So estruturas de dados indexados do mesmo tipo. Onde cada espao ser preenchido com um tipo nico de dados. Indexados???? O que isso? um ndice para a posio onde ser armazeda a informao. Tem como finalidade criar uma capacidade de armazenamento do mesmo tipo. Podemos ter vrios ndices. Por conveno o primeiro ndice identifica a linha e o segundo identifica a coluna. Podemos ainda ter um terceiro indice que indicaria o plano. Teste [limite1][limite2][limite3] O incremento de ndices requer mais capacidade de armazenamento limite1 X limite 2 x limite 3 = total de memria 1 caracter = 1 byte - > 10 x 10 = 100 bytes de memria para armazenar 100 caracteres diferentes. Caso fosse do tipo inteiro duplo seriam 200 bytes.
rodrigo.piovesana@gmail.com
Caracter letras[7];
0
A
1
B
2
C
3
D
4
E
5
F
6
G
Caracter Letras[7]; Letras[0]=A; Letras[1]=B; Letras[2]=C; ou eu posso usar um lao para fazer o preenchimento desse vetor afffcredo!
rodrigo.piovesana@gmail.com
Vetor/Matriz unidimencional
Exemplo #define LIMITE 20 Inicio (){ Inteiro m, m1[LIMITE],i; LER(%d,&m); Se (m < LIMITE) Para(i=0;i<m;i++){ m1[i]=i; escrever(%d,m1[i]); } Seno Escreva(Fora do limite); Fim
Definindo o tamanho do vetor Iniciando o programa Declarando variaveis Atrinbuindo um valor para a variavel m Realizando um teste para validao do vetor Lao para preenchimento do vetor Escrevendo o contedo do vetor Se estiver fora do valor limite exibe mensagem fim
rodrigo.piovesana@gmail.com
Como ficaria em C?
Exemplo #define LIMITE 25 main(){ int m,m1[LIMITE],i; scanf("%d",&m); if(m<LIMITE){ for(i=0; i<m; i++){ m1[i]=i; printf("%d",m1[i]); } }else printf(Fora do limite"); system("PAUSE"); }
rodrigo.piovesana@gmail.com
Vetor
Mais um exemplo main(){ char str [7]; int i; for(i=0; i<7; i++){ str[i]= 'A'+i; printf("%c",str[i]); } system("PAUSE"); }
rodrigo.piovesana@gmail.com
Obs: Desenvolver somente o algortmo! NO PAPEL MANO! Obs2: Nada de C por enquanto!
rodrigo.piovesana@gmail.com
Correo Exerccio 1
inicio (){ inteiro m[3] [2], I , j ; m[0][0]=1; m[0][1]=2; m[1][0]=3; m[1][1]=4; m[2][0]=5; m[2][1]=6; PARA (I igual a 0 ; I menor que 3 ; I = I + 1){ PARA (j igual a 0 ; j menor que 2 ; j = j + 1) ESCREVA ( %2d , m [ I ] [ j ]); } ESCREVER ("\n\n\n\n");
PARA ( I igual a 2; I maior e igual a 0 ; I = I -1 ){ PARA (j igual a 1; j maior e igual a 0; j = j -1) ESCREVER ( %2d ", m [ I ] [ j ] ); } ESCREVER ("\n\n\n\n");
PAUSA }
rodrigo.piovesana@gmail.com
Exerccio 2
inicio(){ Real str [20]; Inteiro i; PARA (I igual a 0; I menor que 20; i=i+1){ LER( %f ", &str[i] ); } PAUSA; }
rodrigo.piovesana@gmail.com
Exerccio 3
INICIO () { REAL str [20], media; INTEIRO I; PARA (I igual a 0; I menor que 20; I = I + 1){ LER( %f ", &str[i] ); } media=0; PARA (I igual a 0; I menor que 20; I = I + 1){ media = media + str[i]; } media = media/20; PAUSA }
rodrigo.piovesana@gmail.com
Exerccio 4
INICIO ( ) { inteiro A[100] , soma , i; PARA ( I igual a ; I menor que 100; i++){ A[i] = 1+A[i]; } soma=0; PARA ( I igual a ; I menor que 100; i++){ soma = soma + A[i]; } ESCREVER ( %d , soma); PAUSA }
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
6 -Alterar o exerccio anterior para armazenar quantos nmeros forem necessrios para dar uma soluo completa!
rodrigo.piovesana@gmail.com
S um detalhe
INICIO ( ) { inteiro a,I; LER ( % d , &a); inteiro matriz[a];
rodrigo.piovesana@gmail.com
Ordenao de um vetor
0 4 1 3 2 2 3 5 4 1 5 6
1
2
2
3
3
4
4
5
5
6
rodrigo.piovesana@gmail.com
Como eu j disse em aula e repito mais fcil do que ganhar do Palmeiras e Santos esses times sem estruturas! SPFC=caf com leite
Um algortmo de ordenao consiste na comparao de cada elemento com todos os elementos subseqentes. O elemento ser trocado com o outro a depender dele ser menor ou maior. Esse um dos tipos mais simples!!!
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
Para encontrar um valor em vetor voc deve realizar uma Pesquisa Sequencial e testar esse valor. Qual o problema desta pesquisa? Temos um outro modelo que se chama Pesquisa Binria. PESQUISAR!
rodrigo.piovesana@gmail.com
Matriz Bidimensional
0 0 1 2 3 4 M q s E e 1 a u a X s 2 S E c X s 3 X X O X E 4 X X X X X 5 X X X X X
o
rodrigo.piovesana@gmail.com
Caracter festas[6][6]; Temos duas maneiras de inserir informaes em matrizes com mais de um indice:
Na mo: festas[5][3] = ; ou podemos utilizar dois laos: um para controlar as colunas e um para controlar as linhas.
rodrigo.piovesana@gmail.com
Exemplo
Inicio inteiro M[3][2], i,j; M [0,0] =1; M [0,1] = 2; M [1,0] = 3; M [1,1] = 4; M [2,0] = 5; M [2,1] = 6; para (i igual 0; i menor que 3; i = i + 1 ) //linha para(j igual 0; j menor que 2; j = j + 1) //coluna escreva ( %d , M[ j, i ]); // ANALISAR ESTA LINHA!!! Fim
rodrigo.piovesana@gmail.com
Matrizes bidimensionais
Define limite 5 Inteiro I,j,mat[limite][limite]; Para (i = 0; i < m; i = i + 1) Para (j = 0; j < n; j = j + 1) ler("%d", &mat[i][j]);
rodrigo.piovesana@gmail.com
EXEMPLO
#include <stdio.h> #include <stdlib.h>
main(){ int i,j,matriz[3][2]; for(i=0; i<3;i++){ for(j=0;j<2;j++){ scanf("%d",&matriz[i][j]); } } for(i=0; i<3;i++){ printf("\n"); for(j=0;j<2;j++){ printf("[%d]",matriz[i][j]); } } system("pause"); }
rodrigo.piovesana@gmail.com
7. Analisar as linhas de comando do programa matriz2d.cpp 8. Dada duas matrizes de inteiros com m linhas e n colunas calcular soma dos elementos. Dica: Voc tem que ler as duas matrizes e somar em uma terceira. 9. Realizar o mesmo exerccio acima s que deve realizar o produto entre as matrizes! 10. Dada uma matriz real A m x n, verificar se existem elementos repetidos em A.
rodrigo.piovesana@gmail.com
Extra Classe
Faa um programa que leia a idade de 50 pessoas e apresente a mdia de todas, alm de identificar a mais velha e a posio que em que ela se encontra na matriz. Escrever um programa que solicite e leia letra por letra o nome completo de uma pessoa. O caractere sustenido # indica o fim do nome. Depois apresentar o nome limpo (sem o #, no centro da tela). Escrever um programa que leia uma matriz 4x4, multiplique os elementos da sua diagonal principal por uma constante K , tambm lida, e escreva a matriz resultante.
rodrigo.piovesana@gmail.com
Caracter Matrix [5][9][3]; Claro que teremos 3 laos para controlar 1 2 3 4 5 6 7 8 9 esse tipo 1
1 2 3 4 5 o h a 2 3
rodrigo.piovesana@gmail.com
String nada mais do que um conjunto de caracteres (ou um vetor, s isso). C/C++ possui comando prprios para manipulao desse conjunto. Uma "string" definida como sendo constituida de um vetor de caracteres (tipo de dado char - 1 byte) que terminada por um "nulo". Um nulo especificado usando-se '\0' que zero. Por exemplo, se quisermos declarar um vetor "str" que possa armazenar uma string de 10 caracteres, escrevemos: caracter str [11]; No necessario adicionar manualmente o nulo (\0) no final das constantes string - o compilador faz isso automaticamente.
rodrigo.piovesana@gmail.com
getstr() Recebe uma string - dev-cpp gets() strcpy() Copia uma string strcat() Concatena duas strings strlen() Retonar o comprimento de uma string strcmp() Compara a ordenao alfabtica de uma string Biblioteca <string.h>
rodrigo.piovesana@gmail.com
Exemplo
Inicio (){ Caracter produto[ ]={a,b,a,c,a,x,i}; Escrever (%s,produto);
} int main(){ char produto[ ]={'a','b','a','c','a','x','i','\0'};
printf("%s",produto); system("PAUSE");
}
Ou H autores que consideram esta forma ilegal! int main(){ char produto[ ]=abacaxi; printf("%s",produto); system("PAUSE"); }
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
main(){ char string_que_recebe[80],string_lida[80],base[10]="teste\0"; char concatena[80]; int r; gets(string_lida); strcpy(string_que_recebe,string_lida); r=strlen(string_que_recebe); if(strcmp(string_que_recebe,base)==0){ strcat(string_lida,string_que_recebe); printf("%s\n",string_que_recebe); printf("%s\n",string_lida); printf("%d\n",r); }else printf ("\nString diferente!"); system("PAUSE"); }
rodrigo.piovesana@gmail.com
EXERCCIO NO LAB
12. Verificar o funcionamento das seguintes funes escrevendo um programa para testar as funes. Verifique o exemplo string1.cpp
rodrigo.piovesana@gmail.com
Funes
So expresses para auxiliar na programao, onde so executados repetidamente uma srie de passos, podemos ter funes para qualquer tipo de objetivo. Portanto podemos economizar na digitao ou melhor ainda, deixar o algortmo mais limpo, sendo este mais simples e fcil de entender.
rodrigo.piovesana@gmail.com
Exemplo
#BIBLIOTECAS
funcao limpa_tela();
INICIO ( ) { limpa_tela( ); ESCREVER ("Vai ser impresso depois"); limpa_tela( ); } INICIO limpa_tela(){ Sistema ("cls"); ESCREVER ("Teste"); Sistema ("cls"); }
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
Imagine que voc ter que realizar N vezes um clculo numrico para uma determinada atividade. Como realizar isto com uma funo? Quando realizarmos a chamada da funo nos passamos as variaveis que sero utilizadas nesta parte do clculo. Ex: funcao(a); funcao2(b); a e b so letras ou nmeros que foram recebidos pelo computador. E como fica a funo??? Do mesmo jeito? No! No inicio do programa voc tem que dizer quantas variaveis sero utilizadas e na funo em si e qual o seu nome. funcao (inteiro); funcao2 (caracter); Inicio funcao (inteiro a) ou Inicio funcao2 (caracter b)
rodrigo.piovesana@gmail.com
Exemplo
#biblioteca <math.h>
real operador ( real x, real y); INICIO ( ) { real x,y,r; ESCREVER ("\nDigite um numero a ser elevado"); LER ("%f,",&x); ESCREVER ("\nDigite o expoente"); LER("%f,",&y); r= operador(x,y); ESCREVER ("\nResultado %f",r); "PAUSA"; } real operador( real x, real y){ real resultado; resultado=expoente ( log ( x ) * y ); returna resultado; }
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
void limpa_tela(); void ordena(char[]); main(){ char s[30]; char opcao='s'; limpa_tela(); while (opcao=='s'){ printf("Digite uma string"); gets(s); ordena(s); printf("Caracteres ordenados"); printf("%s",s); printf("Outra vez?"); opcao=getch(); } system("PAUSE"); } void limpa_tela(){ system("cls"); printf("Programa de ordenao de um vetor"); getch(); system("cls"); } void ordena(char v[]){ int i,j,aux; for(i=0;i<strlen(v)-1;i++) for (j=i+1;j<strlen(v);j++){ if(v[i]>v[j]){ aux=v[i]; v[i]=v[j]; v[j]=aux; } } } rodrigo.piovesana@gmail.com
14. Realizar uma funo para troca de valores entre duas variaveis. 15. Realizar uma funo para tirar a mdia de um vetor. 16. Realizar um funo para verificar se a matriz simtrica.
rodrigo.piovesana@gmail.com
Ponteiros
Um ponteiro proporciona um modo de acesso a variveis sem referenci-las diretamente O mecanismo usado para isto o endereo da varivel, que age como intermedirio entre a varivel e o programa que a acessa. Ponteiro = representao simblica de um endereo
rodrigo.piovesana@gmail.com
So usados situaes em que a passagem de valores dificil ou indesejvel. Razes: Fornecem maneiras com as quais funes podem realmente modificar os argumentos que recebem Para passar matrizes e strings mais convenientemente de uma funo para outra Manipular matrizes mais facilmente atravs da movimentao de ponteiros para elas, em vez da prpria matriz Criar estruturas de dados complexas, como listas encadeadas e rvores binrias, onde uma estrutura referencia uma outra Para comunicar informaes sobre a memria (malloc) O mais importante, cdigos mais rpidos e eficientes.
rodrigo.piovesana@gmail.com
Mas e o algortmo?
* indica ao compilador que a varivel no ir armazenar um valor e sim um endereo & indica o endereo da variavel.
Inteiro contador=10; //inteiro com valor 10 Inteiro *ponteiro; //ponteiro para um inteiro ponteiro=&contador; //nos d o endereo do contador que esta armazenando em ponteiro *ponteiro=12; //o valor do contador agora 12!
rodrigo.piovesana@gmail.com
Algortmo de exemplo
Inicio() inteiro numero,valor; inteito *p; numero=55; p=# valor=*p; escrever (valor); escrever (p); escrever (*p); Pausa; }
rodrigo.piovesana@gmail.com
Em C
#include <stdio.h> #include <stdlib.h> int main (){ int num,valor; int *p; num=55; p=# valor=*p; printf ("\n\n%d\n",valor); printf ("Endereco para onde o ponteiro aponta: %p\n",p); printf ("Valor da variavel apontada: %d\n",*p); system("pause"); }
rodrigo.piovesana@gmail.com
Mais um exemplo
Inicio (){ inteiro numero,*p; numero=55; p=# escrever(numero); *p=100; escrever(numero); Pausa; }
rodrigo.piovesana@gmail.com
Em C
#include <stdio.h> #include <stdlib.h> int main (){ int num,*p; num=55; p=# printf ("\nValor inicial: %d\n",num); *p=100; printf ("\nValor final: %d\n",num); system("pause"); }
rodrigo.piovesana@gmail.com
Acabou?
Pesquisar: incremento e decremento de ponteiros.
rodrigo.piovesana@gmail.com
rodrigo.piovesana@gmail.com
Estruturas
Qual o problema das matrizes quando queremos adicionar vrios tipos diferentes? Quando usamos dados desiguais usamos estruturas. uma coleo de uma ou mais variveis, possivelmente de tipos diferentes, colocadas juntas sob um nico nome. (estruturas so chamadas de registro em algumas linguagens). Pode-se usar vrias matrizes para armazenar diversos tipos de dados, no a maneira mais recomendado pela dificuldade de manipulao.
rodrigo.piovesana@gmail.com
Primeiro voc deve definir o tipo de estrutura que voc quer criar. Uma estrutura pode conter qualquer nmero de membros de diferentes tipos.
Struct
Facil Int numero; Char caracter;
Nome da estrutura
Membros da estrutura
rodrigo.piovesana@gmail.com
Acabamos que criar um novo tipo de dados chamado Facil Composto por dois elementos: uma variavel chamada numero e outra caracter. Tenha isso na cabea: uma estrutura um tipo de dado cujo formato definido pelo programador.
rodrigo.piovesana@gmail.com
Declarando variaveis
Struct uma estrutura Facil o tipo de estrutura X o nome da variavel. x.numero =2; x.caracter = R;
Exemplo
Inicio () { estrutura tipo { inteiro numero; caracter letra; }; estrutura tipo x1; estrutura tipo x2; x1.numero =2; x1.letra=R; x2.numero =3; x2.letra=o; Escrever (%d %d, x1.numero, x2.numero); Escrever (%c %c, x1.letra, x2.letra); } #include <stdio.h> #include <stdlib.h> main () { struct tipo { int numero; char letra; }; struct tipo x1; struct tipo x2; x1.numero =2; x1.letra='R'; x2.numero =3; x2.letra='o'; printf ("%d %d", x1.numero, x2.numero); printf ("%c %c", x1.letra, x2.letra); system ("pause"); }
rodrigo.piovesana@gmail.com
OU
Inicio () { estrutura tipo { inteiro numero; caracter letra; } x1,x2;
x1.numero =2; x1.letra=R; x2.numero =3; x2.letra=o; Escrever (%d %d, x1.numero, x2.numero); Escrever (%c %c, x1.letra, x2.letra); }
rodrigo.piovesana@gmail.com
Exerccio
Elaborar uma estrutura para armazenar uma lista de livros. Antes de realizar a estrutura voc deve perguntar: Quais so as caracteristicas de um livro? Ttulo, autor, editora, nmero de pginas, registro, preo, etc
rodrigo.piovesana@gmail.com
#include <stdio.h> #include <stdlib.h> #include <conio.h> main () { struct tipo { int registro; char titulo[30]; }; struct tipo l1; struct tipo l2; fflush(stdin); printf ("Digite o nmero do livro:"); scanf("%d",&l1.registro); printf ("\nDigite o nome do livro:"); fflush(stdin); gets(l1.titulo); printf ("%d", l1.registro); printf ("\n%s", l1.titulo); system ("pause"); }
rodrigo.piovesana@gmail.com
main () { struct tipo { int registro; char titulo[30]; }; struct tipo l1[5]; int i; for(i=0;i<5;i++){ fflush(stdin); printf ("\nDigite o nmero do livro:"); scanf("%d",&l1[i].registro); printf ("\nDigite o nome do livro:"); fflush(stdin); gets(l1[i].titulo); } for(i=0;i<5;i++){ printf ("\n%d", l1[i].registro); printf ("\n%s", l1[i].titulo); } system ("pause"); } rodrigo.piovesana@gmail.com
Para casa
Estruturas aninhadas
Estruturas para funes Matrizes de estruturas
Ponteiros em estruturas
rodrigo.piovesana@gmail.com
No acabou ainda
Criar uma estrutura para descrever restaurantes. Os membros devem armazenar o nome, endereo, preo mdio e tipo de comida. Criar uma matriz de estruturas e escrever uma funo que imprima todos os restaurantes de um certo tipo de comida.
rodrigo.piovesana@gmail.com
Arquivos
a capacidade de produzir informaes que esto sendo executadas em determinados momentos e transformar em informaes permanentes. Mesmo aps que nos desligamos o computador. Chamamos isso de arquivos. Podemos ter dois tipos de arquivos em C os Binrios e os arquivos ASCII.
rodrigo.piovesana@gmail.com
A estrutura FILE
FILE uma estrutura pr definida para compor o ponteiro para as aes com os arquivos.
Caracter insere um a um no arquivo. Utiliza tcnicas de Buffers para no ficar escrevendo toda a hora no HD. Binrio Ideal quando estamos trabalhando com String, matrizes e estruturas.
rodrigo.piovesana@gmail.com
Um arquivo aberto em modo texto interpretado em C como sequncias de caracteres agrupadas em linhas. As linhas so separadas por um nico caractere chamado caractere de nova linha ou LF (linefeed). ASCII 10. O mesmo ocorre quando o SO abre este arquivo e procura dois caracteres CR (13) e LF (10). O compilador converter o par CR/LF em um nico caractere de nova linha um arquivo aberto de texto lido. H ainda um indicador de final de arquivo chamado EOF (end of file). Binrio mais simples, no h converso. No reconhecida a indicao de fim de linha. Um outra diferena como os binrios interpretam os nmeros. No arquivo texto os nmeros so gravados como caractere e em binrio so gravados como esto na memria.
rodrigo.piovesana@gmail.com
Podemos ter de baixo-nvel, onde todas as informaes so passadas de uma forma unitria. Alto-nivel, executamos um comando para abrir/fechar/ler/gravar
rodrigo.piovesana@gmail.com
fopen
Funo para abertura de um arquivo. Fopen(nome do arquivo,opo); Exemplo: Inicio () { FILE *ponteiro; Se ((ponteiro = abrir (teste.txt,w)!=NULL)){ escrever(Escreve ai!\n); fechar(ponteiro);} Seno escrever (No foi possivel); }
rodrigo.piovesana@gmail.com
rb wb ab
Detalhes importantes
Quanto tentamos abrir um arquivo nos devemos testar para verificar se o programa conseguiu realizar a operao, pois se podemos ter um programa travado por causa de uma falha de programao. Quando abrimos um arquivo e NO foi bem sucessida a operao um NULL retornado como valor. NULL constante pr-definida com valor 0.
rodrigo.piovesana@gmail.com
Quando criamos um arquivo teste.txt, por exemplo, o ponteiro para este arquivo estar apontando para a posio inicial do arquivo. SEMPRE!!!! Ponteiro do arquivo
teste.txt
rodrigo.piovesana@gmail.com
Funes
Fopen
fopen ("teste.dat","ab+")
fclose(ponteiro); fwrite(&l1,sizeof(l1),1,ponteiro); fread(&l1,sizeof(l1),1,ponteiro); Fseek(ponteiro,offset,0); // 0 inicio, 1 corrente, 2 fim do arq.
rodrigo.piovesana@gmail.com
Fclose
Fwrite
Fread
Fseek
Exemplo Fopen
if ((ponteiro = fopen ("teste.dat","ab+"))) if (!ponteiro){ printf ("No consegui abrir"); } else { fclose(ponteiro); }
rodrigo.piovesana@gmail.com
Exemplo Fread
if ((ponteiro = fopen ("teste.dat","ab+"))) if (!ponteiro){ printf ("No consegui abrir"); } else { fread(&l1,sizeof(l1),1,ponteiro); printf("%d",l1.registro); printf("%s",l1.titulo); fclose(ponteiro); }
rodrigo.piovesana@gmail.com
Exemplo Fwrite
if ((ponteiro = fopen ("teste.dat","ab+"))) if (!ponteiro){ printf ("No consegui abrir"); } else { fwrite(&l1,sizeof(l1),1,ponteiro); fclose(ponteiro); }
rodrigo.piovesana@gmail.com