Tag: ficheiros

Guião laboratorial n.º 3 – exercício 5

Desenvolva uma função que troque o conteúdo de dois ficheiros. Os nomes dos ficheiros são passados como argumentos da função.

#include <stdio.h>
#include <stdlib.h>

void trocaC(char *t1, char *t2){
FILE *f1;
FILE *f2;
FILE *temp1, * temp2;
char chO1,chO2;

f1=fopen(t1, "r");
f2=fopen(t2, "r");
temp1=fopen("temp1.txt", "w");
temp2=fopen("temp2.txt", "w");

if(f1==NULL){
 printf("\nerro ao abrir o ficheiro %c", *t1);
 return;
}
if(f2==NULL){
 printf("\nerro ao abrir o ficheiro %c", *t2);
 return;
}
if(temp1==NULL || temp2==NULL){
 printf("\nerro ao abrir o ficheiro temp");
 return;
}

//-----------------------copiar dos originais para o temporario
while((chO1=fgetc(f1))!=EOF){
fputc(chO1, temp1);
}
while((chO2=fgetc(f2))!=EOF){
fputc(chO2, temp2);
}
printf("\ncopia do ficheiro %c::%c para o temp com sucesso", *t1, *t2);
fclose(temp1);
fclose(temp2);
fclose(f1);
fclose(f2);

//-----------------------copiar do temporario para os originais
temp1=fopen("temp1.txt", "r");
temp2=fopen("temp2.txt", "r");
f1=fopen(t1, "w");
f2=fopen(t2, "w");


while((chO1=fgetc(temp1))!=EOF){
fputc(chO1, f2);
}
while((chO2=fgetc(temp2))!=EOF){
fputc(chO2, f1);
}
fclose(temp1);
fclose(temp2);
fclose(f1);
fclose(f2);

remove("temp1.txt");
remove("temp2.txt");
}


int main()
{
 char s1[20], s2[20];

 printf("Qual o nome do 1 ficheiro?");
 gets(s1);
 printf("Qual o nome do 2 ficheiro?");
 gets(s2);
 trocaC(s1, s2);

 return 0;
}

Tags : , ,

Guião laboratorial n.º 3 – exercício 4

Desenvolva uma função que escreva no monitor uma determinada linha de um ficheiro de texto. O nome do ficheiro e o número da linha são passados como argumentos da função.

#include <stdio.h>
#include <stdlib.h>

void mostraC(char *t1, int linha){
FILE *f1;
char ch;
int i=1;

f1=fopen(t1, "r");

if(f1==NULL){
  printf("\nerro ao abrir o ficheiro %s", t1);
  return;
}

while((ch=fgetc(f1))!=EOF){
  if(i==linha)
  {
    printf("%c", ch);
  }
  if(ch=='\n'){
    i++;
  }
}

printf("\n ..lido tudo com sucesso");

fclose(f1);
}


int main()
{
    char s1[20];
    int l;

    printf("Qual o nome do 1 ficheiro?");
    gets(s1);
    printf("Qual o nome da linha a ler?");
    scanf("%d", &l);
    mostraC(s1, l);

    return 0;
}


Tags : ,

Guião laboratorial n.º 3 – exercício 3

altere a função da questão anterior de modo a garantir que as linhas do texto mostradas na consola surjam numeradas.

#include <stdio.h>
#include <stdlib.h>

void mostraC(char *t1){
FILE *f1;
char ch;
int i=1;

f1=fopen(t1, "r");

if(f1==NULL){
  printf("\nerro ao abrir o ficheiro %s", t1);
  return;
}

printf("\n%d. ",i);
while((ch=fgetc(f1))!=EOF){
printf("%c", ch);
  if(ch=='\n'){
    printf("%d. ",i+1);
    i++;
  }
  }

printf("\n ..lido tudo com sucesso");

fclose(f1);
}


int main()
{
    char s1[20];

    printf("Qual o nome do 1 ficheiro?");
    gets(s1);
    mostraC(s1);

    return 0;
}


Tags : ,

Guião laboratorial n.º 3 – exercício 2

Desenvolva uma função que mostre o conteúdo de um ficheiro de texto na consola. O nome do ficheiro é passado como argumento.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void mostraC(char *t1){
FILE *f1;
char ch;

f1=fopen(t1, "r");

if(f1==NULL){
  printf("\nerro ao abrir o ficheiro %s", t1);
  return;
}

while((ch=fgetc(f1))!=EOF)
  printf("%c", ch);

printf("\n ..lido tudo com sucesso");

fclose(f1);
}


int main()
{
    char s1[20];

    printf("Qual o nome do 1 ficheiro?");
    gets(s1);
    mostraC(s1);

    return 0;
}


Tags : ,

Guião laboratorial n.º 3 – exercício 1

1. Desenvolva um programa que duplique um ficheiro de texto. A informação de qual o nome do ficheiro original e do nome do novo ficheiro (cópia do original) deve ser feita através da linha de comando.
Exemplo (assumir que o programa se chama copia): ao ser chamado o programa copia com a linha de comando seguinte:
c: \> copia codigo.c novo.txt
é criado um novo ficheiro, novo.txt, que é uma réplica do ficheiro codigo.txt.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void copia(char *t1, char *t2){


FILE *f1, *f2;
char ch;

f1=fopen(t1, "r");
f2=fopen(t2, "w");
if(f1==NULL){
 printf("\nerro ao abrir o ficheiro %s", t2);
 return;
}
if(f2==NULL){
 printf("\nerro ao abrir o ficheiro %s", t2);
 return;
}

while((ch=fgetc(f1))!=EOF)
 fputc(ch, f2);

printf("\n copia com sucesso");

fclose(f1);
fclose(f2);
}


int main()
{
 char s1[20], s2[20];

 printf("Qual o nome do 1 ficheiro?");
 gets(s1);
 printf("Qual o nome do 2 ficheiro?");
 gets(s2);
 copia(s1, s2);

 return 0;
}


Tags : ,