Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[DUDA] Ejercicio de TP Streams
Autor Mensaje
nanohueso Sin conexión
Profesor del Modulo A
Thats what she said
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 239
Agradecimientos dados: 268
Agradecimientos: 30 en 20 posts
Registro en: Feb 2012
Mensaje: #1
[DUDA] Ejercicio de TP Streams Dudas y recomendaciones Informática I (Electrónica)
Escriba un programa que permita copiar archivos de cualquier tipo. Llámelo
copy. Recibe por línea de comandos el path del archivo fuente en primer lugar y
luego separado por uno o mas espacios o tabs, el path de destino. Compruebe
que ambos argumentos están disponibles, y de otro modo no prosiga con la
copia e informe al usuario el modo correcto de invocación de copy.
Uso: copy <path archivo origen> <path archivo destino>

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


int main(int argc, char *arg[])

{
char buffer[40];
FILE *fp;
FILE *fp1;

fp= fopen(arg[1],"rt");
fp1=fopen(arg[2],"w+t");

fread(&buffer,sizeof(buffer),1,fp);

while( (feof(fp))==0)
{
fwrite(&buffer,sizeof(char),1,fp1); // escribo en el archivo destino lo leido en el archivo origen
fread(&buffer,sizeof(buffer),1,fp);
}

fclose(fp);
fclose(fp1);

return 0;
}

Cuando lo ejecuto, ingreso por argumentos del main , los 2 paths, el del archivo que quiero copiar, y el path del lugar donde quiero copiar el archivo.Y me aparece "Segmentation fault (core dumped)"
04-11-2012 19:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matyary Sin conexión
Presidente del CEIT
SORPRENDEME!
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.809
Agradecimientos dados: 68
Agradecimientos: 342 en 83 posts
Registro en: Mar 2011
Mensaje: #2
RE: [DUDA] Ejercicio de TP Streams
Eso es porque los parámetros que le estás asignando al main no son compatibles con lo que ingresás al ejecutar el programa. Los argumentos deberían ser ambos iguales, del tipo del path del archivo.

Con los argumentos que vos estás pasandole al main, por ej., podrías hacer un programa que la línea de ejecución sea el nombre del programa seguido de la línea de un archivo (1,2,3,etc.) y el path del archivo en sí. Lo que podría hacer, es copiar esa línea en un nuevo archivo que creás vos dentro del código.


Off-topic:
Fijate de cambiar eso, y sino esperá la respuesta de alguien que esté más fresco con el tema.

\[\sqrt{-1} \;\; 2^3 \;\; \sum \;\; \pi\]
... and it was good!


Mi web: Von Hexlein
04-11-2012 22:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Mviera Sin conexión
Empleado de Fotocopiadora
zungguzungguguzungguzeng
**

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 35
Agradecimientos dados: 6
Agradecimientos: 5 en 3 posts
Registro en: Sep 2012
Mensaje: #3
RE: [DUDA] Ejercicio de TP Streams

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *arg[])
{
char buffer[40];
FILE *fp;
FILE *fp1;
int bytesR;
fp= fopen(arg[1],"rt");
fp1=fopen(arg[2],"w+t");
/*buffer= malloc(fp->_cnt);
free(buffer);*/
while( (feof(fp))==0)
{
bytesR=fread(buffer,1,sizeof(buffer),fp);
fwrite(buffer,1,bytesR,fp1); // escribo en el archivo destino lo leido en el archivo origen
}
fclose(fp);
fclose(fp1);
return 0;
}


bueno en tu codigo el principal problema que tenes es en las funciones fwrite y fread ya que no le estas pasando la direccion del bufer, si declaro un vector o un puntero(char vect[] o char *vect), la direccion es en ambos casos vect, pero si lo declaro como una variable su direccion es &vect(siempre que el prototipo diga * le tenes que pasar la direccion de memoria y no el valor).
otra cosa que confunde es el segundo/tercer parametro de la funciones fread y fwrite,si no conoces el tamaño del archivo que lees no podes decirla a la funcion que lea de a bloques, haci que combiene que lea de a un byte sizeof(buffer) veces.

pd:al codigo le faltan detalles como proteccion de errores de escritura/lectrura o que pases mal los parametros al main).
otra cosa que no encontre ni en el stdio.h son los campos de la estructura file (saber el tamaño me serviria para hacer esto de manera dinamica).
pd2:estoy preparando final para esto haci que me viene bien practicar estas cosas.
05-11-2012 02:03
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)