[ Milos Vasin @ 05.04.2005. 10:27 ] @
Cao ljudi, imam jedan mali problem.
Imena fajlova su mi tplfilm.0000, tplfilm.0001, tplfilm.0002 itd.
Treba da ih otvaram u petlji, ali kako da mi menja zadnji broj?

for (z=0;z<9;z++)
{
g=fopen(tplfilm.000 (ovde ne znam sta da upisem. ???)
fclose(g);
}

znaci prvo mi otvori tplfilm.0000, nesto uradi, zatvori, pa onda otvara tplfilm.0001 itd.

Ako neko zna bilo bi super da mi pokaze, jer sam ja u matlabu imao ovakav kod koji radi u matlabu:


namein=sprintf('/home/milos/128128/example/EX1p_Insa/tplfilm.000%d',W);

gde mi je W brojac.

pretpostavljam da je nesto slicno.
[ alex @ 05.04.2005. 15:25 ] @
Jao, jao, pa zar ne pomaze citanje uputstva za printf() komandu?!

Code:

for (int i=0; i < 10000; i++) printf("%04d", i);


Sad, tebi je naravno potreban sprintf. Siguran sam da ces se snaci (hint: "%04d").
[ idb @ 05.04.2005. 15:30 ] @
Evo kraci primer (u C-u) koji bi mogao resiti tvoj problem:
Code:
//Windows 2000, Dev-C++ 4.9.9.1
#include <stdio.h>
int main ()
{
    int i,n;
    char ime[255];
    FILE *pFile;
    for (i=0;i<12;i++)
    {
        n = sprintf(ime, "tplfilm.%04d",i); // generisi ime fajle i vrati broj
                                            // upisanih karaktera ili negativan broj
                                            // u slucaju greske
        pFile = fopen (ime,"wt");           // otvori fajlu za upis u text modu
        fputs("pisem u fajl: ",pFile);      // upisi text 
        fputs(ime,pFile);                   // upisi ime fajle 
        fclose(pFile);                      // zatvori fajlu 
    }
    system("pause");
    return 0;
}
}

[ idb @ 05.04.2005. 15:35 ] @
Ops...
Da ne menjam poruku, izbrisi sam poslednju veliku zagradu!
[ dejandj @ 06.04.2005. 12:04 ] @
Evo (skoro) isto to SAMO da ispunjava zahtev 8+3 (dos!)...

Code:


void writeM(char *mFile, int tc, int sc, float tt)
    {
    FILE *fpOut;
    char mFileName[81];
    char *nula1 = "0";
    int tempy = 0;
    char buffer[17];
    int i = 0;
    int clip = 0;

    strncpy(mFileName, mFile, 4); // fajlovi za sp
    mFileName[4] = '\0';
    if(sc < 10)
    strcat(mFileName, nula1);
    if(sc < 100)
    strcat(mFileName, nula1);
    if(sc < 1000)
    strcat(mFileName, nula1);
    itoa(sc, buffer, 10);
    strcat(mFileName, buffer);
    if (!strrchr(mFileName, '.')) // add extension
    strcat(mFileName, ".mss");

    /* Check existence of file mFileName */
    if(access(mFileName, 0) == NULL) {
       printf("ERROR: file %s exists\n", mFileName);
       exit(-2);
    }

    if ((fpOut = fopen(mFileName, "w")) == (FILE *) NULL)
    {
    fprintf(stderr, "ERROR: Cannot open file %s\n", mFileName);
    exit(-2);
    }
/* Sad radi sa fajlom sta vec treba */
}


Bili ko mogao da ovo (a i onaj "txt"), "prevede" u C#?
Mozda C++?
[ idb @ 06.04.2005. 13:37 ] @
Citat:
dejandj: Evo (skoro) isto to SAMO da ispunjava zahtev 8+3 (dos!)...
Mislim da si ga nepotrebno zakomplikovao, jer se tri mesta u ekstenziji moze obezbediti sa:
Code:
n = sprintf(ime, "tplfilm.%04d",i);

Sto se tice C# ne bih da probam, ali u C++ fazonu bi to izgledalo ovako:
Code:
//Windows 2000, Dev-C++ 4.9.9.1
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main(int argc, char *argv[]){
    char prev;
    int maxb = 12;
    for (int i=0;i<maxb;i++){
        stringstream ss;
        prev = cout.fill();      // sacuvaj stari fill character (mozda ti zatreba)
        ss.fill ('0');
        ss.width(4);
        ss<<i;
        string myFile = "tplfilm." + ss.str();
        ss.fill(prev);        // vrati predhodni fill character 
        cout<<myFile<<endl;
        ofstream outf(myFile.c_str());
        outf<<"zapisujem u fajlu: "<<myFile<<endl;
        outf.close();
    }
    system("PAUSE");
    return 0;
}

Izgleda komplikovanije nego u C-u, ali se covek brzo navikne...

[ dejandj @ 06.04.2005. 14:38 ] @
Citat:
idb: Mislim da si ga nepotrebno zakomplikovao, jer se tri mesta u ekstenziji moze obezbediti sa:
...
Sto se tice C# ne bih da probam, ali u C++ fazonu bi to izgledalo ovako:
...
Izgleda komplikovanije nego u C-u, ali se covek brzo navikne...


Nisi me "dobro" razumeo...

Za 9999 fajlova u 8.3 formatu extenzija NEmoze da se koristi pa je "file name" redukovan na 4 (cetiri) znaka a preostala 4 su string (0000-9999) a extenzija je fix.

Razmisljao sam se i o HEX extenziji sto bi moglo dati 4096 fajlova!
Inace ovaj "moj" code je za generisanje fajlova iz matrice i poziva se kao funkcija kojoj se prosledjuje file name...

U svakom slucaju hvala!
[ idb @ 06.04.2005. 16:27 ] @
Da budem iskren, od tvog koda sam samo video onaj deo sa if(sc...) pa sam se setio da sam ja tako nekad u Pascalu radio jer nisam znao bolje, a trebale su mi falje Graf001.plt....Graf999.plt.
Kada sam presao u ove vode video sam da se slicne stvari resavaju lakse sa sprintf i svidelo mi se...kako i ne bi.
U svakom slucaju, mislim da Milos ima sada dovoljno materijale da resi svoj problem.
[ Milos Vasin @ 07.04.2005. 17:21 ] @
Hvala puno. Odradio sam :)))))