Autor
|
Tema: Ayuda con un divisor de archivos (Leído 2,515 veces)
|
sabeeee
Desconectado
Mensajes: 155
|
Por favor requiero su ayuda para poder terminar este código, es similar al hacha, divide los archivos en 100 bytes pero no funciona como quiero que funcione, tengo pensado pasarlo a C++ por completo. // copia.c: Copia de ficheros // Uso: copia <fichero_origen> <fichero_destino> /// Teoria . . . /// Se empieza por intentar hacer un divisor de archivos /// Ingresa el archivo /// Lee cabecera y si hay > es ok, < cierre... /// > 2do es el nombre y 1ero > "/" es que hay carpeta /// si la hay lee y va guardando caracter por caracter hasta en encontrar el /// siguiente > es el tamaño hasta <, finaliza encabezado sigue hasta la cantidad de bytes /// que se especificaron, si hay otro reinicia el proceso. #include <stdio.h> #include <iostream> #include <string.h> using namespace std; int c=0; int main(int argc, char **argv) { FILE *abrir, *crear; //const int BUFSIZE=0x160000; // Tamaño del buffer //unsigned char buffer[BUFSIZE]; unsigned char buffer[1]; int bytesLeidos; char nombre[1023]; char divisor[1023]; if(argc != 3) { cout<<"Usar: abrir <fichero_origen_ach>\n"; return 1; } // Abrir el fichero de entrada en lectura y binario abrir = fopen(argv[1], "rb"); if(!abrir) { cout<<"El fichero "<<argv[1]<<" no existe o no puede ser abierto.\n"; return 1; } int co=0; sprintf(divisor, "%d", co); strcpy(nombre,argv[1]); strcat(nombre,divisor); printf(nombre); getchar(); // Crear o sobreescribir el fichero de salida en binario crear = fopen(nombre, "wb"); if(!crear) { cout<<"El fichero "<<argv[1]<<" no puede ser creado.\n"; fclose(abrir); return 1; } int i=100; // Bucle de copia: while((bytesLeidos = fread(buffer, 1, 1, abrir))) { if (c == i){ co++; strcat(nombre,divisor); strcpy(nombre,argv[1]); sprintf(divisor, "%d", co); printf(divisor); // prueba getchar(); // prueba } fwrite(buffer, 1, bytesLeidos, crear); c++; } // Cerrar ficheros: fclose(abrir); fclose(crear); return 0; }
|
|
« Última modificación: 29 Marzo 2015, 01:10 am por sabeeee »
|
En línea
|
"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él." Francis Bacon
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Por favor requiero su ayuda para poder terminar este código, es similar al hacha, divide los archivos en 100 bytes pero no funciona como quiero que funcione Lo primero que debes hacer es indicar de una forma clara y precisa que operación debe realizar el programa (los comentarios en el se deben cambiar en esa misma linea). Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
sabeeee
Desconectado
Mensajes: 155
|
Lo primero que debes hacer es indicar de una forma clara y precisa que operación debe realizar el programa (los comentarios en el se deben cambiar en esa misma linea).
Un saludo
Clara de que ? si el proyecto es personal.
|
|
|
En línea
|
"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él." Francis Bacon
|
|
|
crack81
Desconectado
Mensajes: 222
|
Te dejo este codigo que hice a mi me servio pruebala si tienes dudas me comentas saludos. Esta hecho en c++ asi te evitas la conversion #include<iostream> #include<string> #include <fstream>//maneja los ficheros de lectura como escritura #include <cstdlib> //llama la funcion itoa using namespace std; int main() { ifstream leer("contar.exe",ifstream::binary); //nombre del archivo a partir leer.seekg (0, leer.beg); //El archivo sera abierto desde la posicion cero char buffer[100]; //almacenara bloque de 100 bytes o char char filename[10];//almacenara el entero convertirdo a caracteres int cont=1;//el contador servipara para nombrar a los archivos creados string data="";//almancerar el numero convertiro a caracter mas la extension .exe if (leer.is_open()) {//si el archivo se pudo abrir entra while(!leer.eof()) {//leera el archivo hasta que llege al final de el leer.read(buffer,100); //leera por bloque de 100 byte o char itoa(cont,filename,10);//convierte de entero a arreglo de caracterese data=filename;//asigna el arreglo a un string data=data+".exe";//al string se le añade la extension .exe ofstream escribir(data.c_str(),ofstream::binary);//creamos un nuevo //archivo a escribir con el nombre que almacena data escribir.write(buffer,100);//escribira solo bloques de 100 escribir.close();//cierra el fichero para que en la siguiente iteracion //pueda crear otro archivo cont++;//aumenta el contador en uno } leer.close();//cierra el fichero de lectura } cout<<"vueltas "<<cont-1<<endl; //muestra el numero de vueltas realizadas cin.get(); cin.get(); return 0; }
|
|
|
En línea
|
Si C/C++ es el padre de los lenguajes entonces ASM es dios.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa en c "Máximo común divisor de dos números"
Programación C/C++
|
rayk
|
8
|
51,794
|
26 Octubre 2013, 23:06 pm
por absgab
|
|
|
divisor binario de arreglo, no funciona
Electrónica
|
loml666
|
0
|
2,395
|
4 Agosto 2013, 18:48 pm
por loml666
|
|
|
Divisor en VHDL
Electrónica
|
Casilda
|
0
|
4,040
|
5 Junio 2014, 23:41 pm
por Casilda
|
|
|
mayor divisor primo
Programación C/C++
|
mariano96
|
2
|
2,112
|
24 Febrero 2015, 02:01 am
por mariano96
|
|
|
Maximo común divisor c++
Programación C/C++
|
Laleylalo5
|
2
|
2,863
|
31 Marzo 2017, 00:12 am
por ivancea96
|
|