Professional Documents
Culture Documents
de Programao C
Daniela G. Trevisan
daniela@cesup.ufrgs.br
Breve Histrico
C comparado a outras
linguagens
Introduo Linguage
C comparado a outras
linguagens
Nvel Baixo
Nvel Alto
Nvel Mdio
Clareza
Velocidade
Assembler
Basic
Pascal
COBOL
Introduo Linguage
Ada
Modula -2
Aplicaes escritas em C
Introduo Linguage
Caractersticas da Linguagem C
Caractersticas da Linguagem C
Linguagens Interpretadas: l o
cdigo fonte, traduz e executa cada
vez que o programa for executado.
Introduo Linguage
Detalhes Importantes
C case senitive
Palavras reservadas
Bibliotecas
#include minha_biblioteca.h ou
#include <minha_biblioteca.h>
Introduo Linguage
Estrutura de um programa
C
/* Primeiro Programa em C */
#include <stdio.h>
main()
{
printf(Meu primeiro programa em C\n);
}
Introduo Linguage
Estrutura de um programa
C
/* Primeiro Programa em C */ comentrios
#include <stdio.h> /*biblioteca de E/S */
main() /*funo principal inicio do programa*/
{ /*marca incio da funo*/
printf(Meu primeiro programa em
C\n); /*funo para escrever na tela*/
} /*marca fim da funo*/
Introduo Linguage
Digitando um programa C
p1.c
Introduo Linguage
Compilando e Executando
Executando:
>> ./nomeexec <ENTER>
OBS:
Se o nome do executvel no for informado o default
a.out
Introduo Linguage
Varivel
Main ( )
{
int idade;
idade = 30;
printf ( A idade : %d, idade);
}
Introduo Linguage
Nomes de Variveis
C sensvel ao caso:
peso
<>
Peso
<>
pEso
Declarao de Variveis
tipo
char
int
float
double
bytes
1
2
4
8
escala
-128 a 127
-32.768 a 32.767
3.4e-38 a 3.4e+38
1.7e-308 a 1.7e+308
Introduo Linguage
(4 bytes)
(0 a 255)
(0 a 65.535)
Introduo Linguage
Comandos bsicos
Entrada
de
Dados
Processamento
de dados
Instrues de E/S
Introduo Linguage
Sada
de
Dados
Scanf
Exemplo:
scanf(%d,&idade);
Introduo Linguage
Exemplo:
printf (Digite a sua idade:\n);
scanf (%d, &idade);
printf(Sua idade : %d, idade);
Introduo Linguage
String de controle
%c caracter
%d inteiro
%e nmero ou notao cientfica
%f ponto flutuante
%o octal
%x hexadecimal
%s string (cadeia de caracteres)
%lf double
Introduo Linguage
Exemplo strings de
controle
#include <stdio.h>
main ( )
{
char a ;
printf ( digite um caracter );
scanf ( % c, &a );
printf ( \n %c = %d em decimal, a, a);
printf (%o em octal, %x em hexadecimal, a, a);
}
Digitando m:
m = 109 em decimal, 155 em octal, 6d em
hexadecimal
Introduo Linguage
Ex:
inteiro2bytes
float4bytes
char 1 byte
Introduo Linguage
Ex:
Sada: valor = 2, endereo = 1230
Main ( )
Varia conforme memria da mquina
{
int num;
num = 2;
printf (valor = %d, endereo = %Iu, num,&num);
}
Introduo Linguage
Caracteres Especiais
\n
\r
\t
\b
\
\\
nova linha
enter
tabulao (tab)
retrocesso
aspas
barra
Introduo Linguage
#include <stdio.h>
main ( )
{
printf (os alunos so %2d \n, 350);
printf (os alunos so %4d \n, 350);
printf (os alunos so %5d \n, 350);
}
Sada:
os alunos so 350
os alunos so 350
os alunos so
350
Introduo Linguage
Sada:
3456.8
3456.780
Introduo Linguage
Programando Exerccio 1
Programando Exerccio 2
Nome
Endereo
Telefone
Cidade
Cep
Introduo Linguage
Operadores Aritmticos
Operador
+
*
/
%
-++
Ao
Adio
Multiplicao
Diviso
Resto da diviso
inteira
Subtrao (unrio)
Decremento
Introduo Incremento
Linguage
Operadores Relacionais e
Lgicos
Operador
Ao
>
Maior que
>=
<
Menor que
<=
==
Igual a
!=
Diferente de
&&
Condio E
||
Condio OU
No
Introduo Linguage
Operadores - Observao
Em C o resultado da comparao
ser ZERO se resultar em FALSO e
DIFERENTE DE ZERO no caso de
obtermos VERDADEIRO num teste
qualquer.
Introduo Linguage
Operadores - Exemplo
#include <stdio.h>
main ( )
Sada: Verd.=1 Falso = 0
{
int verdadeiro, falso;
verdadeiro = (15 < 20);
falso = (15 == 20);
printf(Verd.= %d,Falso= %d,
verdadeiro, falso);
}
Introduo Linguage
Comparaes e Testes
Se
x = 10;
y = ++x;
/* x=x+1;
ento
x = 11 e
y = 11
y=x; */
porm Se
x = 10;
y = x++;
/* y=x;
x=x+1 */
ento
x = 11 e
y = 10
Introduo Linguage
Programa Exemplo
Pre/Pos Incremento
#include<stdio.h>
main()
{
int cont = 0, loop;
loop=++cont;
printf(Loop=%d, Cont=%d\n, loop, cont);
loop=cont++;
printf(Loop=%d, Cont=%d\n, loop, cont);
Comparaes e Testes
Se
x = 1;
y = 2;
printf(%d == %d e %d\n, x, y, x==y )
Qual seria a sada deste comando?
resultaria em 1 == 2 0
(pois a expresso falsa)
Introduo Linguage
Comparaes e Testes
if (10 > 4 && !(10 < 9) || 3 <= 4)
Operador Sizeof
Introduo Linguage
Converses de Tipos
Introduo Linguage
Introduo Linguage
Exerccios
2)
3)
Introduo Linguage
Estruturas de Deciso
if
if - else
switch
(?:) Operador Condicional
Introduo Linguage
Comando if
if (condio) {
instruo1;
intruo2;
if (condio)
instruo;
#include<stdio.h>
main()
{
charch;
ch=getchar();
if(ch==p)
printf(vocpressionoua
teclap);
}
#include<stdio.h>
main()
{
if(getchar())==p){
printf(vocdigitoup);
printf(pressioneoutratecla);
getchar();
}
}
Introduo Linguage
if aninhados
#include<stdio.h>
main()
{
charch;
printf(digiteumaletra
entreAeZ);
ch=getchar();
if(ch>=A)
if(ch<=Z)
printf(vocacertou);
}
#include<stdio.h>
main()
{
charch;
printf(digiteumaletra
entreAeZ);
ch=getchar();
if((ch>=A)&&(ch<=Z))
printf(vocacertou);
}
Introduo Linguage
Comando if-else
Comando if-else
if (condio)
instruo;
else
instruo;
#include <stdio.h>
main ( )
{
if (getchar ( ) == p)
printf ( voc digitou p);
else
printf ( voc no digitou p);
}
Introduo Linguage
#include<stdio.h>
main()
{
intnmero;
scanf(%d,&nmero);
if(nmero<0)
printf(nmeromenorquezero);
elseif(nmero<10)
printf(nmeroe<10);
elseif(nmero<100)
printf(nmero10e<100);
else
printf(nmero100);
}
Introduo Linguage
interno
EX1: quando z = b ser executado?
if(n>0)
if(a>b){
z=a;
calculafatorial(z);
}
else
z = b;
Ex2:
if(n>0){
if(a>b)
z=a;
}else
z = b;
Introduo Linguage
Exemplo2:Maiorentretrsnmeros
main()
{
inta,b,c;
printf(Digiteo1Nmero:);
scanf(%d,&a);
printf(\nDigiteo2Nmero:);
scanf(%d,&b);
printf(\nDigiteo3Nmero:);
scanf(%d,&c);
if(a>b)
if(a>c)
printf(\nOMaior%d,a);
else
printf(\nOMaior%d,c);
else
if(b>c)
printf(\nOMaior%d,b);
else
printf(\nOMaior%d,c);
}
main()
{
inta,b,c,d;
cls();
printf(Digiteo1Nmero:);
scanf(%d,&a);
printf(\nDigiteo2Nmero:);
scanf(%d,&b);
printf(\nDigiteo3Nmero:);
scanf(%d,&c);
if(a>b)
d=a;
else
d=b;
if(c>d)
printf(\nOMaior%d,c);
else
printf(\nOMaior%d,d);
}
Introduo Linguage
Comando ?:
Exemplo:
ABS = (num < 0) ? - num : num;
Introduo Linguage
Exerccios
4)
5)
6)
Introduo Linguage
Comando Switch
Comando Switch
switch <varivel> {
case <constante 1> :
<comandos>;
[break;]
case <constante 2> :
<comandos>;
[break;]
case <constante 3> :
<comandos>;
[break;]
[default :
<comandos>;]
}
OBS:
varivel deve ser uma
varivel do tipo inteiro ou
caracter;
break serve para terminar
a seqncia de comandos em
execuo, por serem
opcionais, se forem
suprimidos permitem que o
case a seguir seja
executado, sem haver
qualquer quebra na
seqncia do processamento.
Comando Switch -
#include <stdio.h>
main ( )
{
char op;
float num 1, num 2;
Exerccio
cc p1.c -o p1 -lm
Introduo Linguage
Estruturas de Repetio
#include <stdio.h>
main ( )
{
printf (1);
printf (2);
: : :
printf (10);
}
sada: 1 2 3 4 ...
10
Como imprimir os
1000 1os nmeros
a partir de 1?
Introduo Linguage
Estruturas de Repetio
#include<stdio.h>
main ( )
{
int num;
for (num = 1; num <= 1000; num++)
printf ( % d, num);
}
Sada:
3 ... 1000
Introduo Linguage
Comando for
Comando for
Incremento:
define como a varivel de controle ser
alterada
sempre executada aps a execuo do corpo
do lao
Exemplo: imprimindo nmeros pares
#include<stdio.h>
Sada 2 4 6 8
main ( )
{
int nmero;
Comando for
for (x=0,y=0;x+y<100;++x,y=y+x)
printf(%d,x+y);
Esta instruo inicializaria x e y com zero,
incrementando x de 1 em 1 e y receberia seu valor
acrescido do de x. O resultado a cada iterao seria
impresso desta forma: 0 (x=0 e y=0) 2 (x=1 e y=1)
5 (x=2 e y=3) 9 14 e assim sucessivamente.
Introduo Linguage
for(;;) {
scanf(%c,&c);
if (c == A)
break;
/*interrompe o que deveria ser um lao eterno*/
printf(Fim do Loop!);
Comando While
while <condio> <comando>;
Exemplo: Contagem
#include <stdio.h>
main()
{
int i=0;
while (i < 10) {
printf(%d,i);
i++;
}
}
O loop se repete,
enquanto a
condio for
verdadeira
Introduo Linguage
Comando do - while
do {
<comandos>;
} while <condio>;
#include <stdio.h>
main()
{
int num;
do {
scanf(%d,&num);
} while (num < 100);
}
charch;
inttentativas;
do{
printf(digiteumaletra);
scanf(%c,ch);getchar();
tentativas=1;
while(ch!=t){
printf(%cincorreto\n,ch);
tentativas++;
printf(tentenovamente\n);
}
printf(%ccorreto,ch);
printf(acertouem%dvezes,tentativas);
printf(continua?(s/n):);
scanf(%c,ch);getchar();
}while(ch==s);
}
Exerccios
Funes / Procedimentos
TipoNome(listadeparmetros)
{
corpo
}
Introduo Linguage
Procedimentos
___________usando funcoes___________
Funes
que no
retornam
valores
Tipo: void
#include <stdio.h>
void desenha();
void desenha( )
{
int i;
for (i = 0; i < = 10; i++)
printf (-);
}
main ( )
{
desenha ( );
printf ( usando funes);
desenha ( );
}
Funes
Retornam valores
#include<stdio.h>
intfatorial(int);
intfatorial(intn)
{
inti,resultado=1;
for(i=1;i<=n;i++)
resultado*=i;
returnresultado;
}
main ( )
{
printf ( o fatorial de 4 = %d, fatorial(4) );
printf ( o fatorial de 3 = %d, fatorial(3) );
}
Variveis locais
Variveisdeclaradasdentrodeuma
funosodenominadaslocaise
somentepodemserusadasdentrodo
prpriobloco
Variveis Locais
voiddesenha()
{
inti,j;
...
}
main()
{
inta;
desenha();
a=i;erro
...
}
voiddesenha()
{
inti,j;
...
...
}
voidcalcula()
{
inti,j;
...
...
}
i, j em
desenha so
variveis
diferentes de
i, j em
calcula.
Variveis Globais
voiddesenha()
{
intj;
i=0;
...
}
voidcalcula()
{
intm;
i=5;
...
}
Introduo Linguage
Comando Return
Causaaatribuiodaexpressoafuno
forandooretornoimediatoaopontodechamadadafuno.
#include<stdio.h>
main()
{
charletra;
printf(digiteumaletraem
minsculo);
letra=minsculo();
if(letra==a)
printf(ok);
}
charminsculo()
{
charch;
scanf(%c,ch);
if((ch>=A)&&(ch<=Z))
return(ch+a-A);
else
return(ch);
}
Introduo Linguage
Notepeloexemploanteriorquea
funominsculolumvalor
internamenteconvertendo-opara
minsculo.
Passagemdeparmetroporvalor-
umacpiadoargumentopassada
paraafuno
Introduo Linguage
parmetroreal
}
charminsculo(charch)
parmetroformal
{
if((ch>=A)&&(ch<=Z))
return(ch+a-,A);
else
return(ch);
}
Introduo Linguage
Passando vrios
argumentos
Ex 1:
floatrea_retngulo(float
largura,floataltura)
{
return(largura*altura);
}
Ex 2:
floatpotncia(floatbase,intexpoente)
{
inti;floatresultado=1;
if(expoente==0)
return1;
for(i=1;i<=expoente;i++)
resultado*=base
returnresultado;
}
Introduo Linguage
printf(entrecomonumerodetermos:);
scanf(%d,&termos);
printf(entrecomovalordeX:);
scanf(%f,&x);
printf(Ovalordesrie=%f,serie(x, termos));
}
floatserie(floatx,intn)
{
inti;floatresultado=0;
for(i=1;i<=n;i++)
resultado+=potncia(x,i)/fat(i);
returnresultado;
}
floatpotencia(floatbase,intexpoente)
{
inti;floatresultado=1;
if(expoente==0)
return1;
for(i=1;i<=expoente;i++)
resultado*=base;
returnresultado;
}
intfat(intn)
{
inti,resultado=1;
for(i=1;i<=n;i++)
resultado*=i;
returnresultado;
}
Vetores
tipodedadousadopararepresentarumacoleode
variveisdeummesmotipo
estrutura de dados homognea
unidimensional
intnota0,nota1,nota2;
printf(entrecoma1a.nota);
scanf(%d,¬a0);
:
:
:
printf(mdia = %f, (nota0 + nota1 + nota2) / 3));
Introduo Linguage
Vetores Observaes
importantes
Ex:
emCnoexistedeclaraodevetor
dinmico
o tamanho de um vetor tem que ser
determinado em tempo de compilao
intalunos;
intnotas[alunos];
:: :
printf(entrecomonmerodealunos);
scanf(%d,&alunos);
NO ACEITO !!!
Introduo Linguage
Vetores Observaes
importantes
Soluo: declarar um vetor que
suporte um nmero mximo de
elementos
Ex:
intalunos;
intnotas[70];
:: :
printf(entrecomonmerodealunos);
scanf (%d, &alunos);
Introduo Linguage
Vetores Observaes
importantes
Cnorealizaverificaodelimitesem
vetores
#include<stdio.h>
Vetores Obs
#defineTAMANHO100
main()
{
int quantidade,media=0;
floatnotas[TAMANHO];
// quantidade deve ser TAMANHO
printf(quantasnotasdevoler?);
scanf(%d,&quantidade);
for(i=0;i<quantidade;i++){
printf(entrecomanota%d,i+1);
scanf(%d,¬as[i]);
}
:
:
:
for(i=0;i<quantidade;i++)
media+=notas[i];
:
:
:
importantes
main( )
{
int values[5], i, max;
printf("Entre com 5 numeros:\n");
for( i = 0; i < 5; ++i )
scanf("%d", &values[i] );
max = maximum( values );
printf("\nValor Maximo: %d\n", max );
}
Introduo Linguage
Matrizes
emCpodemosdefinirumvetoremque
cadaposiotemosumoutrovetor(matriz).
estruturadedadoshomognea
multidimensional
Note:
int matria [ 4 ] [ 40 ];
temos 4 matrias, cada uma com 40
alunos
Introduo Linguage
Matrizes - Leitura
inti,j,matria[4][40];
for(i=0;i<4;i++){
printf(entrecomasnotasdamatria%d,i+1);
for(j=0;j<40;j++){
printf(entrecomanotadoaluno%d,j+1);
scanf(%d,&materia[i][j]);
}
}
Introduo Linguage
Varivel String
matrizdotipocharterminadapelocaracterenull\0
cada caractere de um string pode ser acessado
individualmente
vetor de tamanho n string de tamanho ( n-1 )
Ex:
charstring[10]=exemplo;
charstring[10]={exemplo};
charstring[10]={e,x,e,m,p,l,o,\0};
printf(%s,string);
printf(%c,string[0]);
Introduo Linguage
Lendo Strings
Ex:
main()
{
charnome[40];
Sada:
Digiteseunome:Jose Maria
Bom dia Jose
printf(Digiteseunome:);
scanf(%s,&nome[0]);
//scanf(%s,nome);
printf(Bomdia%c,nome[0]);
}
Introduo Linguage
Lendo Strings
Gets
lcaracteresatencontrar\n
substitui \n por \0
Ex:
main()
{
charnome[40];
Sada:
Digiteseunome:Jose Maria
Bom dia Jose Maria
printf(Digiteseunome:);
gets(&nome[0]);//ougets(nome);
printf(Bomdia%s,nome);
}
Introduo Linguage
Imprimindo Strings
printf
puts
Ex:
main()
{
charnome[40];
Sada:
Digiteseunome:Jose Maria
Bomdia
Jose Maria
printf(Digiteseunome:);
gets(&nome[0]);
puts(Bomdia);
puts(nome);
Introduo Linguage
Funes de manipulao de
strings
Strlen
retorna o tamanho do string - no conta \0
Ex:
main()
{
charnome[40];
Sada:
Digiteseunome:Jose Maria
Tamanho = 10
printf(Digiteseunome:);
gets(&nome[0]);
printf(Tamanho=%d,strlen(&nome[0]));
}
Introduo Linguage
Funes de manipulao de
strings
strcat(str1,str2)
concatena str2 ao final de str1
Ex:
Sada:
main()
Maria
{
JoseMaria
char nome[40]=Jose,
Cuidado:
charsobrenome[30]=Maria; dado str1 +
str2 tem que
strcat(nome,sobrenome);
caber em str1
puts(sobrenome);
puts(nome);
}
Introduo Linguage
Funes de manipulao de
strings
strcmp(str1,str2)
comparadoisstringsretornando:
negativosestr1<str2
0sestr1=str2
positivosestr1>str2
acomparaofeitaporordem
alfabtica
Introduo Linguage
#include<stdio.h>
main()
{
char
nome[40]=Jose;
char
sobrenome[30]=Maria;
if(strcmp(nome,sobrenome)!=0)
puts(osstringssodiferentes);
else
puts(osstringssoidenticos);
}
Converses
Ponteiros
Ponteiros
intteste=20;
int*p;
p=&teste;
intteste=20;
int*p;
p=&teste;
printf("%d\n",*p);
pirarmazenaroendereodememriadavarivelteste.Ou
seja,pnoarmazenaovalor20,massimoendereodeteste
que,estesim,armazenaovalor20.
comochegaraovalor20usandoavarivelp?
Introduo Linguage
Ponteiros
Outroexemplo:
charalgo[5]={5,4,3,2,1};
char*c;
c=&algo[2];
Colocamosemcoendereodoterceiroelementodealgo:
c[0]=3,c[1]=2ec[2]=1.
Setivssemosfeitoc=&algo[3],ento:
c[0]=2ec[1]=1.
Introduo Linguage
Ponteiros
intvet_notas[50];
int*pont_notas;
pont_notas=vet_notas;
Paraimprimiraprimeiraeadcimanotadenossovetor,temosduasopes:
print("Aprimeiranota:%d",vet_notas[0]);
print("Aprimeiranota:%d",*pont_notas);
print("Adcimanota:%d",vet_notas[9]);
print("Adcimanota:%d",*(pont_notas+9));
Introduo Linguage
Malloc e Free
Alocao dinmica
#include <stdio.h>
main()
{
int *notas, numero, i;
Introduo Linguage
Estruturas
Estruturas
struct molde_conta
{
char nome[50];
int telefone;
float saldo ;
};
Definido o molde, devemos agora declarar a
varivel que utilizar desse molde:
Estruturas
struct molde_conta
{
char nome[50];
int telefone;
float saldo;
} conta1, conta2;
equivalente a:
struct molde_conta conta1, conta2;
Introduo Linguage
Estrutras - Utilizao do
tipo
for (i=0,conta.nome[i],++i) ;
printf ("o nome tem -> %d letras \n",i);
Introduo Linguage
Vetores de Estruturas
conta[1].telefone=2212324;
conta[1].nome=joao carlos;
conta[1].saldo=1245.89;
conta[5].telefone=2212888;
conta[5].nome=Maria dos Santos;
conta[5].saldo=6908.79;
Introduo Linguage
Arquivos - feopen( )
A funo fopen tem duas finalidades:
- abrir uma fila de bytes
- ligar um arquivo em disco quela fila
FILE *fopen(char *NomeArquivo, char *modo);
FILE *arquivo;
if ((arquivo = fopen(teste,w)) == NULL) {
puts(No posso abrir o Arquivo teste.\n);
exit(1); /* fora o trmino da execuo da rotina */
}
Introduo Linguage
Modo
Significado
r AbreArquivodeTextoparaLeitura
w CriaArquivodeTextoparaGravao
a AnexaaumArquivodeTexto
rb AbreArquivoBinrioparaLeitura
wbCriaArquivoBinrioparaGravao
abAnexaaumArquivoBinrio
r+
AbreArquivodeTextoparaLeitura/Gravao
w+CriaArquivodeTextoparaLeitura/Gravao
a+AbreouCriaArquivodeTextoparaLeitura/Gravao
r+bAbreArquivoBinrioparaLeitura/Gravao
w+bCriaArquivoBinrioparaLeitura/Gravao
a+bAbreouCriaArquivoBinrioparaLeitura/Gravao
Arquivos - putc ( )
Grava caracteres
abertos
em
fila
previamente
putc(a, arquivo);
Introduo Linguage
Arquivos - getc ( )
Ler caracteres em uma fila aberta
int getc(FILE *arquivo);
Exemplo:
ch = getc(arquivo);
while (ch != EOF)
ch = getc(arquivo);
Introduo Linguage
Arquivos - fclose ( )
Fechar as filas abertas. Caso o
programa seja encerrado sem que as
filas sejam fechadas, dados gravados
nos buffers podem ser perdidos.
int fclose(FILE *fp);
fclose(arquivo);
Introduo Linguage
main()
{
FILE *arq;
char ch;
if ((arq=fopen(teste.dat,w)) ==
NULL) {
printf(Arquivo no pode ser
criado\n);
exit(1);
}
do{
ch=getchar();
putc(ch,arq);
}while (ch!=0);
fclose(arq);
Arquivos - ferror ( )
Determina se a operao de arquivo
produziu um erro. Sua forma geral
ser:
int ferror(FILE *fp);
Introduo Linguage
Arquivos - rewind( )
Introduo Linguage
Introduo Linguage
Arquivos - fwrite ( )
main()
{
FILE *fp;
float f = 12.23;
if ((fp=fopen(teste,wb)) == NULL) {
printf(Arquivo no pode ser criado\n);
exit(1);
}
fwrite(&f,sizeof(float(),1,fp);
fclose(fp);
}
Arquivos - fseek ( )
Entrada e sada com acesso aleatrio
int fseek(FILE *fp, long int num_bytes, int
origem);
fp
- o ponteiro de arquivo devolvido por fopen().
num_bytes - um inteiro longo que representa o
nmero de bytes desde a origem at chegar a posio
corrente.
OBS: Este comando normalmente utilizado em
arquivos binrios.
Introduo Linguage
carga()
Exemplo de montagem de um pequeno
{
cadastro de nomes, endereos e salrios
FILE *fp;
de funcionrios em arquivo.
int i;
if ((fp=fopen(LISTA.DAT,rb)) == NULL) {
puts(Falha na Abertura do Arquivo!);
return;
}
inicia_matriz();
for (i=0; i < 100; i++)
if (fread(&matriz[i], sizeof(struct registro), 1, fp) != 1) {
if (feof(fp)) {
fclose(fp);
return;
}
else {
puts(Erro de Leitura! );
fclose(fp);
return;
}
}
}
salvar()
{
FILE *fp;
int i;
if ((fp=fopen(LISTA.DAT,wb))==NULL) {
puts(Falhou Abertura! );
return;
}
for (i=0;i<100;i++)
if (*matriz[i].nome)
if(fwrite(&matriz[i],
sizeof(struct registro), 1,fp) != 1)
puts(Falha na Gravacao! );
fclose(fp);
}
main(argv,argc)
onde
argc - tem o nmero de argumentos
contidos
nas
linha
de
comando
(necessariamente maior ou igual a um,
pois o prprio programa j considerado
um argumento pelo D.O.S.).
argv um ponteiro que acomodar os
caracteres digitados.
if ((fp=fopen(argv[1],w)) == NULL) {
printf(Arquivo no pode ser
aberto\n);
exit(1);
}
do {
ch = getchar();
putc(ch,fp);
} while( ch != $);
fclose(fp);
}
do {
putchar(ch);
ch=getc(fp);
} while( ch != $);
fclose(fp);
}