programación en C

#21
los archivos estan guardados en la carpeta fase1, son 5 archivos que se llaman: 1,2,3,4 y 5...
bien simple para evitar errores...pero no funca...(n)

Código:
#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

void cargardatos(FILE *f,FILE *tabla1,FILE *tabla2,FILE *tabla3);
void main(void)
{
    FILE *f;
    FILE *tabla1;
    FILE *tabla2;
    FILE *tabla3;
    clrscr();
    cargardatos(f,tabla1,tabla2,tabla3);
}

void cargardatos(FILE *f,FILE *tabla1,FILE *tabla2,FILE *tabla3)
{
    char cadena[2014];
    char nombre[0x80];
    int done,i;
    unsigned long frec;
    for(i=1;i<=5;i++){
        sprintf(nombre,"c:\\tc\\fase1\\%d.s2p",i);
        f=fopen(nombre,"r");
        if(f==NULL){
            printf("El archivo no existe.\n");
            return;
        }
        else{
            tabla1=fopen("c:\\tc\\tabla1.txt","w");
            tabla2=fopen("c:\\tc\\tabla2.txt","w");
            tabla3=fopen("c:\\tc\\tabla3.txt","w");
            while(!feof(f)){
                fgets(cadena, 3000,f);
                sscanf(cadena,"%lu",&frec);
                if(frec==1201000000)fputs(cadena,tabla1);
                if(frec==1300000000)fputs(cadena,tabla2);
                if(frec==1399000000)fputs(cadena,tabla3);
            }
        }
    }
    fclose(f);
    fclose(tabla1);
    fclose(tabla2);
    fclose(tabla3);
    return;
}
solo me genera el nuevo archivo "tabla" pero con las lineas que le pido del archivo 3...nada mas..:confused:

el formato de los archivos es .s2p
Dibujo.JPG
 
Última edición:
#22
Código:
            tabla1=fopen("c:\\tc\\tabla1.txt","w");
            tabla2=fopen("c:\\tc\\tabla2.txt","w");
            tabla3=fopen("c:\\tc\\tabla3.txt","w");
Esto tenes que hacerlo una sola vez, así estás perdiendo lo que habias escrito.
 
#24
No me refiero a eso.

Ahí leés el 1.s2p y escribís lo que corresponde en cada tabla.
Pero cuando vas a leer el 2.s2p abrís de nuevo tablax --> perdés lo que habías escrito de 1.s2p.
 
#25
:unsure::unsure: crei que ya quedaba guardado... osea que el bucle lo hago despues de abrir las tablas...ahhhh.....ahora te entiendo :D!!
gracias edu!!(y)

SIIII!! FUNCIONO A LA PERFECCIÓN!!!!!!!!
:aplauso::aplauso::aplauso:



????? WTF????
le cambie el for: iniciado en 0 y hasta 63 y se corta en el archivo 10!! como si los otros no existieran...
la tabla la hace hasta el archivo 9 y despues me muestra que el archivo no existe!!
esta re loco....verifique que esten todos los numeros de archivos...
porque sera???
sera por: char nombre[0x80]; ????:confused:
 
Última edición:
#26
:confused:
char nombre[0x80] es una cantidad de caracteres exagerada (128) por si uno usara nmbres muy largos.
No afecta para nada porque cuando hacés sprintf(nombre,"c:\\tc\\fase1\\%d.s2p\n",i) le agrega un cero marcando el final del string.


Fijate que los nombres de los archivos no tengan ningún caracter extra y es el explorador de archivos que no los muestra.

PD. Yo uso el Salamander, no tolero el explorador de Windows.
 
#31
ok! ahi van... te mando los 64 archivos de datos y el programa en .txt...

obvia todo lo que esta entre /* ... */ al final del programa...que eso todavia no está trabajado...
 

Adjuntos

#32
Era porque abrias y abrías f para lectura y nunca lo cerrabas (salvo al final)

Cerrandolo en cada iteración funciona de 10.

Código:
void cargardatos(FILE *f,FILE *tabla1,FILE *tabla2,FILE *tabla3)
{
    char cadena[1000];
    char nombre[0x80];
    int i;
    unsigned long frec;
    tabla1=fopen("c:\\tc\\tabla1.txt","w");
    tabla2=fopen("c:\\tc\\tabla2.txt","w");
    tabla3=fopen("c:\\tc\\tabla3.txt","w");
    for(i=0;i<64;i++){
        sprintf(nombre,"c:\\tc\\fase1\\%d.s2p",i);
        f=fopen(nombre,"r");
        if(f==NULL){
            printf("El archivo no existe.\n");
            return;
        }
        else{
            while(!feof(f)){
                fgets(cadena, 1000,f);
                sscanf(cadena,"%lu",&frec);
                if(frec==1201000000)fputs(cadena,tabla1);
                if(frec==1300000000)fputs(cadena,tabla2);
                if(frec==1399000000)fputs(cadena,tabla3);
            }
        }
        fclose(f);
    }
    fclose(tabla1);
    fclose(tabla2);
    fclose(tabla3);
    return;
}
 
Última edición:
#34
bueno, no quiero ser reeee pesada, pero surgio un pequeñisimo asustillo....:D

intento (digo intento porque estoy buscando, probando, errando y todo eso...) crear una tabla o planilla, con los valores que obtuve de mis 3 documentos, es decir, unir los datos de los tres documentos (tabla1, tabla2 y tabla3) en una sola tabla "suprema"...

no me refiero a copy.paste...sino desde el mismo programa, que una vez creadas las tablas individuales, cree una que una los datos...o directamente hacerla desde el principio, sin el paso intermedio de crear a las tres tablas....

creo que estoy mareando no??
pero de ser asi (como lo ultimo) se reeee complicaria...
 

Dr. Zoidberg

Well-known-Papá Pitufo
#35
Y por qué no usás el programa que ya tenés y hacés otro que arme la tabla a partir de los archivos que genera el primer programa?
Luego los pegás con un pequeño "script del shell" del DOS...(si es que puede llamarse así)

No entiendo para que querés unirlo en uno solo...nunca escuchaste el "lema de UNIX": Small Is Beautiful...?
 
#36
veo que me enrede en mis palabras...
ezevalla lo que decis es lo que pretendo hacer...quiero algo como la imagen que esta abajo!
Dibujo2.JPG

la tabla esta cortada pero la idea está
 
Última edición:
#38
ya se que soy reeee pesada con las dudas de prog. en c...pero

como tengo que guardar un programa para poder ejecutarlo con el ejecutable (valga la rebundancia jeje:D)

porque hice un programa y cuando lo guardo y despues abro el ejecutable, solo me tira un cartel que dice:...
"Programa funcionando"
"Programa funcionando"
"Programa funcionando"
"Programa funcionando"
...
... y asi....:confused:
 
Arriba