Bueno días!
Escribo porque tengo un problemilla con un proyecto de C que estoy realizando. Este proyecto tiene que realizar una copia de ficheros de manera remota y según lo tengo codificado, realiza la copia pero solo de manera parcial. Digamos que si el fichero original tuviese 100 líneas (por decir algo), la copia tendrá 85 lineas bien copiadas, pero nada más, no termina de copiarlo.
El procedimiento que sigo en el código es el siguiente:
-Realizo un bucle while que estará iterando hasta localizar el final del fichero.
-Dentro, voy sacando a una variable "linea" cada una de las lineas con fgets del fichero que quiero copiar.
-En una variable "num_caracteres" voy sumando la longitud de cada una de estas lineas, para ver el numero de caracteres de todo el fichero binario.
En código:
int num_caracteres = 0;
char * linea = malloc(1000);
while (feof(fichero)==0)
if (fgets(linea,1000,fichero))
num_caracteres+=strlen(linea);
//Llegado este punto tengo un printf que me dice que hay 18960 caracteres en el fichero
Una vez calculado el numero de caracteres, defino una cadena de caracteres llamada "datos" de tamaño "num_caracteres", que es donde debo meter todo el contenido del fichero para enviar y que se realice la copia de manera remota.
Una vez hago esto llamo a una función que recibe como parámetros las variables datos, num_caracteres y nombredelfichero(que no es mas que el nombre del fichero del que voy a copiar como cadena de char).
Realizo un fopen (devolverá fichero_para_lectura) de dicha cadena y escribo la siguiente orden:
fread(datos,sizeof(char),num_caracteres,fichero_para_lectura)
devuelvo la variable "datos"(se supone que, ahora sí, con todo el contenido del fichero,aunque se ve que no) y la envío con funciones que se nos han proporcionado.
Como digo el problema es que se supone que "datos" debería tener todo el contenido del fichero, sin embargo el contenido es solo parte de este.
Si alguien sabe dónde esta el error o qué estoy planteando mal estaría muy agradecido de leerle, un saludo!