Вы находитесь на странице: 1из 6

Trabalhando com strings Alem do getc() e putc(), a linguagem C supor as funes relacionadas fputs() e fgets() que efetuam as operaes

de leitura e gravao de strings de caractere de e para um arquivo de disco. Essas funes operam de forma semelhante ao putc() e getc(), mas ao invs de trabalhar com apenas um caractere elas operam strings. Os prottipos dessas funes esto na biblioteca STDIO.H A funo fgets() Le uma string da stream especificada at um caractere de nova linha seja lido ou que lenght-1 caracteres tenham sido lidos. Esse programa ler strings do teclado e escreve-as no arquivo chamado TESTE. Para terminar o programa basta inserir uma linha em branco.

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char str[80]; FILE *fP if ((fp=fopen(TESTE,w))==NULL){ printf(O arquivo no pode ser aberto); exit(1); } do { printf(Digite uma string: \n; gets(str); strcat(str, \n); fputs(str, fp); }while (*str!=\n); fclose(fp); }
Rewind() A funo rewind reposiciona o indicador de posio de arquivo no incio do arquivo especificado como seu argumento. Seu prottipo tambm esta no STDIO.H

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char str[80]; FILE *fP if ((fp=fopen(TESTE,w+))==NULL){ printf(O arquivo no pode ser aberto); exit(1); } do { printf(Digite uma string: \n; gets(str); strcat(str, \n); fputs(str, fp); }while (*str!=\n); rewind(fp); while (!feof(fp)){ fgets(str, 79, fp); cout << str; } fclose(fp); }
remove() Apaga o arquivo especificado, seu prottipo tambm esta na STDIO.H

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ Char ch; If (argc!=2){ Printf(Voc esqueceu de digitar o nome do arquivo); Exit(1); } cout << deseja realmente apagar o arquivo << argv[1] << S/N?; if (char==S || char==s) if (remove(argv[1])){ printf (arquivo no pode ser apagado); exit(1);

} return 0; }
As funes fread() e fwrite() Nessas funes no necessrio definir o tipo de dado a ser utilizado, elas utilizam um buffer padro (ponteiro apontado para uma posio de memria) para ler e escrever. fwrite(&buffer, num_bytes, count, fp); O numero de bytes para escrever ou ler especificado por num_bytes. O argumento count determina quantos itens sero lidos ou escritos e fp o ponteiro para o arquivo aberto anteriormente. A funo fread() retorna o numero de itens lidos. Esse valor poder ser menor que count se o final do arquivo for atingido ou ocorrer um erro. A funo fwrite() retorna o numero de itens escritos. Esse valor dever ser igual a count a menos que ocorra um erro.

#include <stdio.h> #include <stdlib.h> int main(){ FILE *fp; Double D = 12.23; Int I = 101; LONG L = 123023; if ((fp=fopen(TESTE,wb+))==NULL){ printf(O arquivo no pode ser aberto); exit(1); } fwrite(&D, sizeof(Double), 1, fp); fwrite(&I, sizeof(Int), 1, fp); fwrite(&L, sizeof(Long), 1, fp); rewind(fp); fread(&D, sizeof(Double), 1, fp); fread(&I, sizeof(Int), 1, fp); fread(&L, sizeof(Long), 1, fp); cout << D << I << L; fclose(fp); }

fprintf() e fscanf(); Essas funes se comportam exatamente igual as funes printf e scanf, a diferena que as mesmas trabalham com arquivos. Vale salientar que essas funes trabalham com os dados escritos em ASCII, assim elas se tornam mais lentas que as funes fread() e fwrite() que trabalham diretamente com os dados em binrio, pois ao utiliza-las o compilador tem que realizar a converso de ASCII para binrio.

#include <stdio.h> #include <stdlib.h> int main(){ FILE *fp; Char s[80]; Int t; if ((fp=fopen(TESTE,w))==NULL){ printf(O arquivo no pode ser aberto); exit(1); } printf(Digite uma string e um numero); cin >> s >> t; fprintf(fp, %d %s, s, t); fclose(fp) if ((fp=fopen(TESTE,r))==NULL){ printf(O arquivo no pode ser aberto); exit(1); } fscanf(fp, %s %d, s , &t); printf( %d %s, s, t); }

Enumeraes Uma enumerao um conjunto de constantes inteiras que especifica todos valores legais que uma varivel desse tipo pode ter. Tipos enumerados so usados quando conhecemos o conjunto de valores que uma varivel pode assumir. A varivel deste tipo sempre int e para cada um dos valores atribudo um nome significativo. #include <iostream.h> enum mes{ jan , fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez}; int main(){ mes m1, m2, m3; m1 = Abr; m2 = Jun m3= m2-m1; cout << A diferena entre o meses : << m3; if (m1 < m2) cout << m1 << anterior a << m2; else cout << m2 << anterior a << m1; } Unies O tipo union usado de forma semelhante a struct para agrupar um numero de diferentes variveis sob um nico nome. Entretanto uma union utiliza um mesmo espao de memria a ser compartilhado com um numero de diferentes membros, enquanto uma struct aloca um espao diferente de memria para cada um dos membros. A sintaxe exatamente igual a da estrutura, a diferena que ao invs de usar struct usado union. Veja o exemplo: Union num{ Char str[20]; Int i; Float f; }x;

Verifique em casa a sada do programa abaixo. #include <iostream.h> Union num{ Char str[20]; Int i; Float f; }x; struct num2{ Char str[20]; Int i; Float f; }y; int main(){ cout << O tamanho da Uniao : << sizeof(x) << \n cout << O tamanho da estrutura : << sizeof(y) << \n }