Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?

[es] :: C/C++ programiranje :: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?

[ Pregleda: 3905 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?12.03.2007. u 08:52 - pre 208 meseci
Imam program koji otvara dva fajla i prepisuje sadrzaj jednog u drugi.Problem je u tome da bih zelala da otvorim 3-4 fajla pa da to zapisem u jedan.Znaci na kraj prvog fajla da mi zalepi drugi...Svi fajlovi bi se zvali primer.txt,primer1.txt ..iste ekstenzije.Mislila sam da napravim petlju koja bi pitala koliko fajlova i onda bi se toliko puta vrtela.Medjutim u funkciji fopen ne znam kako da upisem ili da li je uposte i to moguce u c jeziku.
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
89.190.198.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?12.03.2007. u 09:36 - pre 208 meseci
Imaš sprintf. Konkretno za primer.txt, primer1.txt, ...

Code:
#include <stdio.h>

int main(void)
{
    int i;
    char filebuff[256];

    for(i=0;i<5;i++)
    {
        if(i==0) sprintf(filebuff,"primer.txt");
        else sprintf(filebuff,"primer%d.txt",i);

        printf("%s\n",filebuff);
    }
}

Ipak se ++uje.
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?12.03.2007. u 11:02 - pre 208 meseci
Hvala,budem probala pa ti javim !
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?13.03.2007. u 09:21 - pre 208 meseci
Uspela sam!!!
Medjutim sada me interesuje da li je to moguce odraditi bez obzira na ekstenziju.Probala sam ovaj program da promenim ekstenziju txt na xls ali excel izlazni fajl ne moze da otvori.Mislila sam da ako otvorim kao binarni da cu moci ali u tom slucaju ne moze cak ni da otvori fajl.
Hvala na razumevanju!

[Ovu poruku je menjao amky78 dana 13.03.2007. u 14:45 GMT+1]

[Ovu poruku je menjao amky78 dana 13.03.2007. u 14:45 GMT+1]
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 08:11 - pre 208 meseci
Ne možeš da otvoriš binarni fajl? Imaš dozvolu za pristup tom fajlu? Daj kod.
Za kopiranje binarnog fajla ideš bajt po bajt koristeći fgetc(). Ekstenzija je tu nebitna.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 10:02 - pre 208 meseci
Uspela sam da otvorim datoteku medjutim on samo jednu datoteku kopira bez obzira na petlju koja pita koliko datoteka. Evo koda.Hvala!
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 10:48 - pre 208 meseci
Imam jedan gotov program (sličan tvom) koji sam nekad davno (nekome) radio,
pa ako hoćeš možeš ga malo doraditi (i ispraviti eventualne greščice):

Razlika je u tome što možeš i da odabereš redosled za spajanje.

Ovo je izlaz na ekran (sa testiranjem pogrešnih upisa):

UNOSENJE NAZIVA DATOTEKA ZA SPAJANJE:
Upisi naziv 1 datoteke (ili '#' za kraj unosa):1.txt
Upisi naziv 2 datoteke (ili '#' za kraj unosa):2.txt
Upisi naziv 3 datoteke (ili '#' za kraj unosa):nema.txt
Uneto ime datoteke ne postoji ili ne moze da se otvori!
Upisi naziv 3 datoteke (ili '#' za kraj unosa):3.txt
Upisi naziv 4 datoteke (ili '#' za kraj unosa):4.txt
Upisi naziv 5 datoteke (ili '#' za kraj unosa):5.txt
Upisi naziv 6 datoteke (ili '#' za kraj unosa):#
Upisi naziv izlazne datoteke:greska?/.txt
Uneto ime izlazne datoteke ne moze da se kreira. Probajte ponovo!
Upisi naziv izlazne datoteke:izlaz.txt
UNESTO JE 5 FAJL(OV)A ZA SPAJANJE
1 DATOTEKA: 1.txt
2 DATOTEKA: 2.txt
3 DATOTEKA: 3.txt
4 DATOTEKA: 4.txt
5 DATOTEKA: 5.txt
UNESI POZICIJU ZA SPAJANJE 1 FAJLA:5
UNESI POZICIJU ZA SPAJANJE 2 FAJLA:4
UNESI POZICIJU ZA SPAJANJE 3 FAJLA:3
UNESI POZICIJU ZA SPAJANJE 4 FAJLA:9
Pozicija je van opsega. Ponovi upis!
UNESI POZICIJU ZA SPAJANJE 4 FAJLA:8
Pozicija je van opsega. Ponovi upis!
UNESI POZICIJU ZA SPAJANJE 4 FAJLA:1
UNESI POZICIJU ZA SPAJANJE 5 FAJLA:2


A kod (sa komentarima):

Code:

#include <string.h>
#include <stdio.h>
#include <ctype.h>

#define MAX_BROJ_DATOTEKA       20
#define MAX_DUZINA_IMENA_FAJLA 100

int main( void )
{
    /* naziv trenutne datoteke koju otvaramo */
   char datoteka[MAX_BROJ_DATOTEKA][MAX_DUZINA_IMENA_FAJLA];
   /* naziv izlazne datoteke koju otvaramo */
   char izlazna[MAX_DUZINA_IMENA_FAJLA];
   /* karakter preko koga ce mo kasnije kopirati*/
   char ch;
   /* redosled za spajanje */
   int redosled[MAX_BROJ_DATOTEKA];
   /* pokazivaci na datoteke */
   FILE *p_datoteka[MAX_BROJ_DATOTEKA];
   /* pokazivac na izlaznu datoteku */
   FILE *p_izlazna;

   /* inicijalizujemo broj fajlova */
   int broj_fajlova=0;

   /* promenljiva koju ce mo iskoristiti kao brojac*/
   int i, j;

   int poz;

   printf( "UNOSENJE NAZIVA DATOTEKA ZA SPAJANJE:\n" );

   /* dok god ne dosegnemo max broj datoteka koje smo predvideli*/
   /* ako zelimo vise, samo povecamo #define inicijalizaciju */
   while ( broj_fajlova < MAX_BROJ_DATOTEKA )
   {
      /* Unosimo naziv i-te datoteke, ili znal # za kraj unosa */
      printf( "Upisi naziv %d datoteke (ili '#' za kraj unosa):", broj_fajlova+1 );
      scanf( "%s", datoteka[broj_fajlova] );

      /* ako smo uneli # to znaci da ne zelimo vise ni jednu datoteku */
      if ( datoteka[broj_fajlova][0] == '#' ) break;

      /* otvaramo i-tu datoteku */
      p_datoteka[broj_fajlova] = fopen( datoteka[broj_fajlova], "r" );

      /* ako je doslo do greske, vrati se na unos */
      if ( p_datoteka[broj_fajlova] == NULL )
      {
         printf( "Uneto ime datoteke ne postoji ili ne moze da se otvori!\n" );
         continue;
      }
      /* ako smo dosli dovde, znaci da je unos lepo prosao */
      /* zatim se vrati na pocetak petlje i pitaj za unos nove datoteke */
      ++broj_fajlova;
   }
   /* ako nismo uneli ni jedan validan fajl, znaci nemamo sta ni da spajamo */
   if ( broj_fajlova == 0 )
   {
       printf("Nije unet ni jedan fajl!\n");
       /* izadji iz programa */
       return;
   }

   /* petlja za upis izlazne datoteke */
   do
   {

      printf( "Upisi naziv izlazne datoteke:" );
      scanf( "%s", izlazna );

      p_izlazna = fopen( izlazna, "w" );

      /* ako je doslo do greske, na primer ako smo uneli neki nedozvoljen...*/
      /* ...znak za ime fajla, vraca nas ponovo na upis  */
      if ( p_izlazna == NULL )
      {
         printf( "Uneto ime izlazne datoteke ne moze da se kreira. Probajte ponovo!\n" );
      }
   }
   while ( p_izlazna == NULL );

   printf( "\nUNESTO JE %d FAJL(OV)A ZA SPAJANJE\n", broj_fajlova );
   for ( i=0; i<broj_fajlova; i++ )
      printf( "%10d DATOTEKA: %s\n", i+1, datoteka[i] );

   /*  inicijalizovanje redosleda */
   for ( i=0; i<broj_fajlova; i++ )
      redosled[i] = 0;

   /* unosenje redosleda */
   for ( i=0; i<broj_fajlova; i++ )
   {
      printf( "UNESI POZICIJU ZA SPAJANJE %d FAJLA:", i+1 );
      scanf( "%d", &poz );
      if ( poz < 1 || poz > broj_fajlova )
      {
         printf("Pozicija je van opsega. Ponovi upis!\n");
         --i;
         continue;
      }
      /* provera da li je vec upisana pozicija */
      for ( j=0; j<broj_fajlova; j++ )
         if ( redosled[j] == poz )
         {
            printf("Pozicija je vec zauzeta. Ponovi upis!\n");
            --i;
            continue;
         }

      /* redosled */
      redosled[i] = poz;

   }


   /* ovaj deo programa spaja datoteke */
   for ( i=0; i<broj_fajlova; i++ )
   {
      while ( ( ch = fgetc( p_datoteka[ redosled[i]-1 ] ) ) != EOF )
      {
         fputc( ch, p_izlazna );
      }

      /* istovremeno zatvori i-tu otvorenu datoteke za spajanje*/
      /* jer nam vise ne treba */
      fclose( p_datoteka[ redosled[i]-1 ] );
   }

   /* zatvori izlaznu datoteku */
   fclose( p_izlazna );
   return ( 0 );
}
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 11:30 - pre 208 meseci
hvala ti za program ..moj program radi ako je u pitanju txt fajl ali ako promenim ekstenziju spajanja onda ne radi konkretnije ako hocu da spojim xls..sad ne znam da li zbog sheet-a u excelu ali me interesuje da li je moguce to odraditi i kako....lupacu glavom dok me ne zaboli pa zaboravim sta sam htela.U svakom slucaju thanks.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 12:40 - pre 208 meseci
Želiš da spojiš dva XLS fajla i da dobiješ novi XLS fajl? To ne možeš prostim spajanjem fajlova, moraš da koristiš neku biblioteku za rad sa XLS fajlovima (za besplatne potraži na www.sourceforge.net).
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 13:12 - pre 208 meseci
To sam pokusavala...hvala..sad barem znam da nisam ja pogresila,nego treba da ubacim biiblioteku.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 13:31 - pre 208 meseci
Ne možeš tek tako da ih spajaš jer oni imaju svoj format, spajanjem se to poremeti.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

amky78
Subotica

Član broj: 133439
Poruke: 9
213.240.37.*



Profil

icon Re: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?14.03.2007. u 13:40 - pre 208 meseci
Mislila sam da ako otvaram fajl kao binarni da cu moci..izgleda da sam bila malo pohlepna....htela sam da napravim program koji bi pitao za ekstenziju (doc,txt,xls) pa bi to spojio...u sustini napravila sam ga zbog txt ali cesto moram da spajam excel pa mi je dojadilo a mislila sam da iskoristim program i da ga dogradim..da ako otvaram kao binarni da ce to ici ....U svakom slucaju puno ti hvala na obavestenju!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Otvaranje vise fajlova u C jeziku radi kopiranja u jedan fajl?

[ Pregleda: 3905 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.