Olá,
estou fazendo um programa em C que copia um arquivo de texto inteiro. Ele copia caractere por caractere, e vai jogando dentro do segundo arquivo. O que fiz foi isso:
#include <stdio.h>
#define ARQ_1 "file1.txt"
#define ARQ_2 "file2.txt"
int main(){
FILE* MyFile;
FILE* MyFileOut;
char* Linha = (char*)malloc(sizeof (char) * 1000);
char c;
int i = 0;
MyFile = fopen(ARQ_1,"r");
if (!MyFile) {
printf("O arquivo nao existe.");
return 1;
} else {
printf("Arquivo encontrado!\n");
printf("Realizando a leitura e copiando seu conteudo...\n");
while((c = getc(MyFile)) != EOF) {
// if (c != '\n') {
Linha[i] = c;
close(1);
MyFileOut = fopen(ARQ_2, "a");
printf("%c",Linha[i]);
i++;
// }
}
Linha[i] = '\0';
}
return 0;
}
O problema é que com um arquivo pequeno ele funciona. Por exemplo: com um arquivo cujo conteúdo é:
Teste teste teste
Leitura Leitura
Burn to be nothing
James Dean is the man
Oh no!
ele funciona corretamente. Mas com um arquivo com muitas linhas (umas 100) ele trava, dá aquele erro não-informativo do Windows, de que o programa precisa ser fechado. Bom, acho que o problema é com a alocação de memória. Enfim, alguém sabe o que pode ser, e como eu poderia resolver isso?
Obrigado!