Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - cartorami

#1
Siii! Muchas gracias!

Justo había probado a contar los caracteres mediante comandos y me ha extrañado que me diese la suma en num_caracteres 18000 porque el comando me indicaba 170mil caracteres, así que el fallo está justo ahí.

Mil gracias! ;-) ;-) ;-) ;D ;D ;D
#2
Programación C/C++ / Copia de ficheros binarios.
5 Septiembre 2016, 11:43 AM
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! ;)

#3
Pues sí, tienes toda la razón del mundo, no lo tenia inicializado  :-[ :-[ :-[ :-[ (fallos de novato  :P )

Mil gracias!!  ;D ;D
#4
En principio lo intento haciendo uso de la función strcpy como sigue:
-----------------------------------------------------------------------
#define TAMANO 100

typedef unsigned char u8;

typedef struct {
u8 tipo;
u8 nombre_fichero[TAMANO]; //Esta cadena contiene "test.txt"
} APDU_PETICION;

APDU_PETICION peticion;

char * nombre_del_fichero = NULL;

strcpy(nombre_del_fichero, (char *) peticion.nombre_fichero);

---------------------------------------------------------------------------

con memcpy cambio la ultima línea por:

memcpy(nombre_del_fichero, peticion.nombre_fichero, TAMANO);

pero en ambos casos me salta un core.  :-\ :-\ :-\
#5
Hola!

Primero de todo decir que estoy empezando a aprender a programar en C y que estoy muy (MUY) verde  :xD :xD , una vez dicho esto:

Estoy realizando un proyectito en C y en uno de los pasos tengo que copiar una cadena de un tipo definido como u8 que se corresponde con unsigned char en otra tabla de char.

Lo he intentado haciendo un cast en la función strcpy y utilizando la función memcpy, que he localizado por internet, pero se ve que no lo hago bien porque siempre me da core en ese paso.

Más concretamente, tengo lo siguiente:

typedef unsigned char u8;
typedef struct {
u8 tipo;
u8 nombre_fichero[100];
} APDU_PETICION;

char * nombre_del_fichero = NULL;

Como digo, mi intención es copiar el contenido de la tabla "nombre_fichero" contenida en la estructura, en la tabla nombre_del_fichero, pero soy incapaz.

Si alguien pudiese ayudarme a resolver este problema estaría muy agradecido  :P

Un saludo!