Autor
|
Tema: archivos en c. (Leído 2,105 veces)
|
aggv1106
Desconectado
Mensajes: 5
|
hola, una consulta...en una parte de un ejercicio me pide que divida un archivo por medio de saltos de linea, el usuario debe ingresar en cuantas partes quiere dividir el archivo, el caso es que no se porque no puedo imprimir el salto de linea donde yo quiero, el código que hice es el siguiente: #include<stdio.h> int main(){ FILE *fp1; int n,a=0, suma=0, cant/*cantidad de datos a agarrar por partes*/; char c; char entrada[100]; printf("Ingrese el nombre del archivo origen:\n"); scanf("%s",entrada); if((fp1=fopen(entrada,"a+"))==NULL){ printf("\nError al abrir el archivo %s",entrada); return 0; } printf("\n ¿en cuantas partes desea partir el archivo?: "); scanf("%d", &n); c=fgetc(fp1);//Acá calculo cuantos bytes tiene el archivo; while (!feof(fp1)){ a=sizeof(c); suma=suma+a; a=0; c=fgetc(fp1); }
cant=suma/n;//cantidad de bytes que debo agarrar para cada parte. suma=0; rewind(fp1); c=fgetc(fp1);// acá deberia imprimir el enter cuando alcancé la cantidad de bytes requeridos para una parte; while(!feof(fp1)){ a=sizeof(c); suma = suma+a; if (suma==cant){ fprintf(fp1, "\n"); suma=0; a=0; } a=0; c=fgetc(fp1); } fclose(fp1);
}
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
c =fgetc(fp1 );//Acá calculo cuantos bytes tiene el archivo;
El que???? Asi no se calcula eso ahi solo obtienes el primer byte del contenido del archivo. Para saber cuanto pesa un archivo tienes que usar la libreria sys/stat.h #include <sys/stat.h> //Dentro de main: int size = fsize("nombre"): //Funcion aparte. off_t fsize(const char *filename) { struct stat st; if (stat(filename, &st) == 0) return st.st_size; return -1; }
Fuente: http://stackoverflow.com/questions/8236/how-do-you-determine-the-size-of-a-file-in-cSaludos!!
|
|
« Última modificación: 29 Junio 2016, 16:54 pm por AlbertoBSD »
|
En línea
|
|
|
|
aggv1106
Desconectado
Mensajes: 5
|
yo me referia a lo siguiente, si tengo un frase en el archivo: "holaquetal" y yo quiero separar la misma de la siguiente forma: hola \n que \n tal. con el fgetc y el while voy sacando y contando caracter por caracter para saber donde imprimir el salto de linea. o sea...no es que calculo cuanto pesa el archivo propiamente dicho, eso fue un error de tipeo mio.
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Hola ten en cuenta que estas imprimiendo en el mismo archivo que estas leyendo. con lo cual cada vez que imprimas un enter, realmente estas sustituyendo el caracter que se encontraba en una posicion adelante dwl cual acababas de leer. Necesitas
a) crear un nuevo archivo temporal donde se reflejen los cambios y hacer el intercambio de archvio
b) leer todo en memoria y reescribir el archvio desde 0 ya con loa cambios hechos.
Saludos
|
|
|
En línea
|
|
|
|
aggv1106
Desconectado
Mensajes: 5
|
probaré con eso, gracias!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como puedo convertir archivos flash ha archivos de videos
Diseño Gráfico
|
asitaka_kintaro
|
3
|
6,402
|
22 Enero 2006, 23:53 pm
por Morris
|
|
|
Análisis archivos Extensiones cambiadas - Archivos camuflados - Contenido real
« 1 2 »
Software
|
Esgrimidor
|
11
|
9,738
|
24 Septiembre 2011, 01:53 am
por Esgrimidor
|
|
|
Cómo? Modificar archivos de la carpeta archivos de programas en windows 7
« 1 2 »
Windows
|
anonimo12121
|
10
|
23,364
|
10 Abril 2011, 01:02 am
por Songoku
|
|
|
Archivos dañados tras recuperación de archivos cifrados (virus policia)
Seguridad
|
marianchaparro
|
2
|
10,564
|
17 Mayo 2012, 20:06 pm
por r32
|
|
|
Unir archivos y agregar el nombre de archivos a cada linea por MS-DOS
Scripting
|
cialem
|
4
|
6,193
|
18 Julio 2012, 16:13 pm
por cialem
|
|