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

citanje i pisanje u datoteke

[es] :: C/C++ programiranje :: C/C++ za početnike :: citanje i pisanje u datoteke

[ Pregleda: 2520 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

danijel_m
Danijel Markic

Član broj: 60612
Poruke: 10
*.cmu.carnet.hr.



Profil

icon citanje i pisanje u datoteke26.09.2006. u 19:27 - pre 214 meseci
Lijepi pozdrav,

napravio sam program koji mi nakon što upišem znak koji tražim i riječ koju pretražujem ispiše koliko se taj znak puta pojavljuje...
Zanima me kako napraviti da program

Code:

#include <stdio.h>
#include <string.h>
#define SIZE 10

int count(char a[], char g)
{
    int i, b = 0, c = 1;
    for(i = 0; a[i] != '\0'; i++)
        if(a[i] == g) b += c;
    printf("\n Broj %c - ova = %d\n", g, b);
    return 0;
}

int main(void)
{
    char a[SIZE], g;
    int b;
    printf("\n Upisi slovo: "); g = getchar();
    printf("\n Upisi rijec: "); scanf("%s", a);
    
    count(a,g);
    return 0;
}

više ne radi na ovaj način nego da mi čita iz datoteke i upisuje u drugu datoteku... Nešto sam napravio, no program provrti (mislim ne javlja da ima grešaka u njemu), no ono što prebroji trebao bi upisati u drugu datoteku (naravno toga nema)...

Evo i kod što sam napravio... Sumnjam da mi nešto valja...

Code:

#include <stdio.h>
#define MAX 128
void ucitavanje (FILE *f, char M[MAX])
{
     int i;
     for (i=0; i='\0';i++)
     fscanf(f,"%c",&M[MAX]);
}


int count(char a[MAX], char g)
{
    int i, b = 0, c = 1;
    for(i = 0; a[i] != '\0'; i++)
        if(a[i] == g) b += c;
    printf("\n Broj %c - ova = %d\n", g, b);

}

int main(void)
{
     FILE *f,*h;
    char a[MAX],g;

    f=fopen("ispis.txt","r");
    ucitavanje(f,a);

    printf("Unesite slovo:");g=getchar();
    h=fopen("upis.txt","w");
    fprintf(h,"%d",count(a,g));
    fclose(h);
}



Unaprijed hvala na pomoći
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: citanje i pisanje u datoteke27.09.2006. u 17:47 - pre 214 meseci
Koliko sam razumeo, treba da u jedan fajl upišeš koliko se puta neki simbol pojavljuje u nekom drugom fajlu. Ovde nije potrebno da ulazni fajl smestiš u memoriju, nego samo da ga pročitaš. Pak, ako vršiš više od jedne analize nad umereno velikim fajlom, učitavanje fajla u memoriju radi analize će poboljšati performanse.

Za sada, baci pogled na sledeću f-ju koja vraća broj pojavljivanja određenog simbola u nekom fajlu.

Code:
//netestirano
int count(const char*filename,char symbol)
{
    FILE *f = fopen(filename,"r");
    int n = 0;
    char c;

    if(f) // za slucaj da fajl nije bio otvoren
    {
        while(1)
        {
            c = fgetc(f);
            if(feof(f)) break;

            if(c == symbol) n++;
        }

        fclose(f);
    }

    return n;
}

Inače while petlja iz primera gore, bez drugog if, je jedan od načina da se pročita fajl od početka do kraja. Drugi malo kompaktniji je
Code:
    while((c = fgetc(f)) != EOF)
    {
        // ...
    }

Ipak se ++uje.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: citanje i pisanje u datoteke27.09.2006. u 19:40 - pre 214 meseci
Code:

#include <stdio.h>
#define MAX 100000

void ucitavanje (FILE *f, char M[MAX])
{
     int i=0;
     while( (M[i++] = fgetc(f)) != EOF );
     fclose(f);
}


int count(char a[MAX], char g)
{
    int i, b = 0;
    for(i = 0; a[i] != '\0'; i++)
        if(a[i] == g) b++;
    printf("\n Broj %c - ova = %d\n", g, b);
    return b;


}

int main(void)
{
    FILE *f,*h;
    char a[MAX],g;

    f=fopen("text.txt","r");
    ucitavanje(f,a);

    printf("Unesite slovo:"); g = getchar(); fflush(stdin);

    h=fopen("upis.txt","w");
    fprintf(h,"%d",count(a,g));
    fclose(h);
}

/* scanf() ti nije radio jer si ga napisao tako da ucitava samo prvi znak iz fajla.*/


 
Odgovor na temu

danijel_m
Danijel Markic

Član broj: 60612
Poruke: 10
*.cmu.carnet.hr.



Profil

icon Re: citanje i pisanje u datoteke01.10.2006. u 00:03 - pre 214 meseci
Hvala na pomoći no uspio sam ga riješiti...

U biti je sve isto...

Code:


#include <stdio.h>
#define MAX 128
int citaj(FILE *a, char g)
{
    int i,b=0;
    char c;
    c=fgetc(a);
    for(i=0; c != EOF; i++)
        {
            if (c==g)
                {
                    b++;
                }
            c=fgetc(a);
        }
    return b;
}
int main(void)
{
    FILE *a, *b;
    char g;
    int c;
    a=fopen("a.txt", "r");
    b=fopen("b.txt", "w");
    printf("daj slovo");
    scanf("%c",&g);
    c=citaj(a,g);
    fprintf(b,"%c %d",g,c);
    fclose(a);
    fclose(b);
}



Ne bih otvarao novi post, no možete li mi reći da li sam dobro napravio zadatak što sam imao na ispitu... Zadatak ide ovako:
Zadana je struktura:

struct vrijeme{
char temperatura;
char tlak;
struct vrijeme *next;
};

Treba napisati funkciju void najvecaTemperatura(vrijeme *a, vrijeme *b, vrijeme *c) koja će uspoređivati prve temperature (odnosi se na a i b) i veću će upisati u c...

Nadam se da nisam nesto preskocio... Čini mi se zadatak prejednostavan, a možda i griješim...

Ovako sam ga riješio:

Code:

void najvecaTemperatura(vrijeme *a, vrijeme *b, vrijeme *c)
{
     if(a->temperatura < b->temperatura)
     {
         c->temperatura = b->temperatura;
     }
     else
     {
         c->temperatura = a->temperatura;
     }
}


Hvala na pomoći
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: citanje i pisanje u datoteke

[ Pregleda: 2520 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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