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

Dupli redovi u datoteci

[es] :: C/C++ programiranje :: Dupli redovi u datoteci

[ Pregleda: 1462 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Dupli redovi u datoteci22.01.2006. u 22:26 - pre 234 meseci
Treba da napišem jedan dosta jednostavan program, ali naišao sam na neke poteškoće!

Proigram treba da otvori datoteku (textualnu) i da iza svakog reda doda još jedan isti takav red!

Napisao sam kod, ali ne radi kako treba. U stvari ništa ne uradi.
Kod je:
Code:

while (fgets(out, 100, dat)!=NULL) {
    fprintf(dat, "%s", out);
}


Ne znam u čemu grešim. Pokušao sam i funkcijom fputs umesto fprintf, ali opet isto!

Ne treba mi gotovo rešenje, trebaju mi samo uputstva!

Dosta je hitno, pa ako neko može da pomogle!

Hvala unapred...

 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
*.167.eunet.yu.



+2 Profil

icon Re: Dupli redovi u datoteci22.01.2006. u 23:11 - pre 234 meseci
A da ti nama lepo okačiš ceo kod pa da gledamo gde je problem?
Kako si otvarao fajl itd.

77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: Dupli redovi u datoteci22.01.2006. u 23:36 - pre 234 meseci
Evo ti upustvo, ucitaj u memoriju cijeli faj pa ga ponovno ispisi.
Ovdje ti radis neki krosing, 100% ces dobiti gluposti.
 
Odgovor na temu

vaske71

Član broj: 61960
Poruke: 1438
*.ptt.yu.



+109 Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 00:05 - pre 234 meseci
okaci ceo kod covece , jer ovo sto si dao nije potpuno
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 00:09 - pre 234 meseci
Evo celog koda!
Code:

#include <stdio.h>

main (int brArg, char *Arg[]) {

        /*deklaracija promenljivih*/
    FILE *dat;
    int zn;
    char out[100], fajl[30], file2[31];
    
        /*brisanje ekrana*/
    clrscr();
    
    

printf("\n\tProgram za dupliranje redova u zadatom textualnom fajlu!\n");
printf("\tZa ime fajla je potrebno uneti samo ime ukoliko se ovaj program 
nalazi\n\t\tu istom direktorijumu kao i fajl. U suprotnom je potrebno 
uneti\n\t\tkompletnu apsolutnu adresu (primer: c:\\dir\\dajl.txt)!\n\n");


/*odredjivanje imena fajla*/
if (brArg == 1) {
    printf("Unesite ime fajla za dupliranje redova: ");
    scanf("%s", fajl);
}
    else strcpy(fajl, Arg[1]);
    

    /*otvaranje fajla*/
    if ((dat = fopen(fajl, "a+") == NULL)) {
    printf("\n\tGRESKA! Fajl nije otvroren! Proverite da li ste uneli dobro ime!\n\n");
    exit(1);

        /*kreiranje duplih redova*/
    while (fgets(out, 100, dat)!=NULL) {
        printf("%s", out);
        fprintf(dat, "%s", out);
    }

        /*zatvaranje fajla*/
    fclose(dat);

    printf("\n\n\n***KRAJ PROGRAMA***\n\n\n");

getch();
return 0;


}




Nisam ga stavio jer mi se čini da ostatak radi kako treba! Otvori fajl normalno, i ispiše ga na ekranu!


[Ovu poruku je menjao del-boy dana 23.01.2006. u 01:13 GMT+1]
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.75.eunet.yu.



+9 Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 02:14 - pre 234 meseci
Citat:
NrmMyth: Evo ti upustvo, ucitaj u memoriju cijeli faj pa ga ponovno ispisi.
Ovdje ti radis neki krosing, 100% ces dobiti gluposti.


A zašto tako? Šta fali ako ima dva deskriptora paralelno otvorena gde će iz jednog čitati, a drugi dva puta pisati?
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
212.62.58.*

Jabber: DarkMan


Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 12:58 - pre 234 meseci
Code:

    while (fgets(out, 100, dat)!=NULL) {
        printf("%s", out);
        fprintf(dat, "%s", out);
    }

Ovako ne moze. Trenutno mogu da nagdjam sta se desava kada procitas jedan red pa pokusas da upises isti takav. Vidim da si fajl otvorio sa "a+" sto znaci da se sve upisuje na kraj fajla sto, koliko mi se cini, nisi hteo.

Moraces da otvoris taj tvoj fajl u modu za citanje i otvoris novi za upis i u njega po dvaput upises to sto procitas iz prvog (kao sto ti je Goran vec rekao). Posle toga mozes jednostavno da izbrises prvi i preimenujes drugi.

Code:

FILE *fin = fopen("in.txt", "r");
FILE *fout = fopen("out.txt", "w");
char buffer[255];
    while (fgets(buffer, 255, fin)!=NULL) {
        fputs(buffer, fout);
        fputs(buffer, fout);
    }
fclose(fout);
fclose(fin);

remove("in.txt");
rename("out.txt", "in.txt");


[Ovu poruku je menjao DarkMan dana 23.01.2006. u 14:01 GMT+1]
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
*.3dnet.co.yu.



+2 Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 13:26 - pre 234 meseci
Upravo tako.
Plus što imaš još dosta greškica u kodu.
Radiš sa stringovima, a nemaš
Code:

#include <string.h>


Zatim

Code:

printf("\n\tProgram za dupliranje redova u zadatom textualnom fajlu!\n");
printf("\tZa ime fajla je potrebno uneti samo ime ukoliko se ovaj program 
nalazi\n\t\tu istom direktorijumu kao i fajl. U suprotnom je potrebno 
uneti\n\t\tkompletnu apsolutnu adresu (primer: c:\\dir\\dajl.txt)!\n\n");


ne može tako da se piše već

Code:

printf("\n\tProgram za dupliranje redova u zadatom textualnom fajlu!\n");
printf("\tZa ime fajla je potrebno uneti samo ime ukoliko se ovaj program" 
"nalazi\n\t\tu istom direktorijumu kao i fajl. U suprotnom je potrebno" 
"uneti\n\t\tkompletnu apsolutnu adresu (primer: c:\\dir\\dajl.txt)!\n\n");


Nedostaje ti par navodnika.
Neke promenljive ti ostaju neiskorišćene...

Pošto vidim da si na vindozi, zameni clrscr(); sa system("CLS");

[Ovu poruku je menjao Pharos dana 23.01.2006. u 14:38 GMT+1]
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 16:00 - pre 234 meseci
OK hvala, pokušaću sa dva fajla!

@Pharos
Nisam ubacio string.h jer mi je ovako radilo sve! Verovatno ga kompajler sam ubaci kad vidi da je potreban!

Što se tiče ovog ispisa znam i za to, ali meni u koju je to sve u jednom redu. Ovde sam lupio par entera da ne bih bespotrebno širio poruku!

ovo za clrscr() nisam znao! Kod mene na Turbo C-u ovo lepo radi, ali probaću sa ovim tvojim kodom!



Hvala svima još jednom! Ako negde zapnem jeviću se opet...

 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: Dupli redovi u datoteci23.01.2006. u 18:13 - pre 234 meseci
Mozda grijesim, no nije li tocno da prilikom upisivanja u datoteku se izvrsava overwrite.
Ako je to tocno (sto cu provjeriti), onda nikako sa onom petljom ne moze ucitati i zatim istovremeno "ubaciti dva reda", a da ne izgubi nesto sta bi se trebalo ucitati sljedecom iteracijom.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Dupli redovi u datoteci

[ Pregleda: 1462 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

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