Prat St R12


P12-1

/* licz.c -- korzystanie ze standardowego we/wy */

#include <stdio.h>

#include <stdlib.h> /* prototyp funkcji exit() */

int main(int argc, char *argv[])

{

int ch; /* przechowuje kolejne odczytywane znaki */

FILE *wp; /* "wskaznik plikowy" */

long licznik = 0;

if (argc != 2)

{

printf("Sposob uzycia: %s nazwa_pliku\n", argv[0]);

exit(1);

}

if ((wp = fopen(argv[1], "r")) == NULL)

{

printf("Nie mozna otworzyc %s\n", argv[1]);

exit(1);

}

while ((ch = getc(wp)) != EOF)

{

putc(ch,stdout);

licznik++;

}

fclose(wp);

printf("Plik %s zawiera %ld znakow\n", argv[1], licznik);

return 0;

}

P12-2

/* reduktor.c -- zmniejsza rozmiar Twoich plikow o dwie trzecie ! */

#include <stdio.h>

#include <stdlib.h>

#include <string.h> /* dla strcpy(), strcat() */

int main(int argc, char *argv[])

{

FILE *we, *wy; /* deklaracja 2 wskaznikow plikowych */

int ch;

char nazwa[40]; /* pamiec dla nazwy pliku wyjsciowego */

int licznik = 0;

if (argc < 2) /* sprawdza obecnosc argumentu */

{

fprintf(stderr, "Sposob uzycia: %s nazwa_pliku\n", argv[0]);

exit(1);

}

if ((we = fopen(argv[1], "r")) == NULL)

{

fprintf(stderr, "Nie moglem otworzyc pliku \"%s\".\n",

argv[1]);

exit(2);

}

strcpy(nazwa,argv[1]); /* kopiuje nazwe pliku do tablicy */

strcat(nazwa,".red"); /* dodaje .red do nazwy */

if ((wy = fopen(nazwa, "w")) == NULL)

{ /* otwiera plik do zapisu */

fprintf(stderr,"Nie mozna utworzyc pliku wyjsciowego.\n");

exit(3);

}

while ((ch = getc(we)) != EOF)

if (licznik++ % 3 == 0)

putc(ch, wy); /* wyswietla co trzeci znak */

if (fclose(we) != 0 || fclose(wy) != 0)

fprintf(stderr,"Blad przy zamykaniu plikow.\n");

return 0;

}

P12-3

/* dodajsl.c -- korzysta z wprintf(), fscanf() i rewind() */

#include <stdio.h>

#include <stdlib.h>

#define MAX 40

int main(void)

{

FILE *wp;

char slowa[MAX];

if ((wp = fopen("slowka", "a+")) == NULL)

{

fprintf(stdin,"Nie moge otworzyc pliku \"slowka\".\n");

exit(1);

}

puts("Podaj slowa, ktore maja zostac dodane do pliku;");

puts("Aby zakonczyc, wcisnij Enter na poczatku wiersza.");

while (gets(slowa) != NULL && slowa[0] != '\0')

fprintf(wp, "%s ", slowa);

puts("Zawartosc pliku:");

rewind(wp); /* przejdz do poczatku pliku */

while (fscanf(wp,"%s",slowa) == 1)

puts(slowa);

if (fclose(wp) != 0)

fprintf(stderr,"Blad przy zamykaniu pliku.\n");

return 0;

}

P12-4

/* echo.c -- korzystanie z fgets() i fputs() */

#include <stdio.h>

#define MAXWIERSZ 20

int main(void)

{

char wiersz[MAXWIERSZ];

while (fgets(wiersz, MAXWIERSZ, stdin) != NULL &&

wiersz[0] != '\n')

fputs(wiersz, stdout);

return 0;

}

P12-5

/* odwroc.c -- wyswietla zawartosc pliku w odwrotnej kolejnosci */

#include <stdio.h>

#include <stdlib.h>

#define CNTL_Z '\032' /* znacznik EOF w plikach tekstowych DOS */

#define DLAN 50

int main(void)

{

char plik[DLAN];

char ch;

FILE *wp;

long licznik, koniec;

puts("Podaj nazwe pliku:");

gets(plik);

if ((wp = fopen(plik,"rb")) == NULL)

{ /* tryb binarny tylko do odczytu */

printf("Nie moge otworzyc %s\n", plik);

exit(1);

}

fseek(wp, 0L, SEEK_END); /* przejdz do konca pliku */

koniec = ftell(wp);

for (licznik = 1L; licznik <= koniec; licznik++)

{

fseek(wp, -licznik, SEEK_END); /* idz do tylu */

ch = getc(wp);

/* dla DOS-u, dziala w UNIXie */

if (ch != CNTL_Z && ch != '\r')

putchar(ch);

/* dla Macintosha */

/* if (ch == '\r')

putchar('\n');

else

putchar(ch); */

}

putchar('\n');

fclose(wp);

return 0;

}

P12-6

/* dopisz.c -- dopisuje pliki do pliku */

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define ROZMIAR_BUF 1024

#define DLAN 50

char temp[ROZMIAR_BUF];

void dopisz(FILE *zrodlo, FILE *cel);

int main(void)

{

FILE *pd, *pz;

int pliki = 0;

char plik_doc[DLAN];

char plik_zro[DLAN];

puts("Podaj nazwe pliku docelowego:");

gets(plik_doc);

if ((pd = fopen(plik_doc, "a")) == NULL)

{

fprintf(stderr, "Blad otwarcia %s\n", plik_doc);

exit(2);

}

if (setvbuf(pd, NULL, _IOFBF, ROZMIAR_BUF) != 0)

{

fputs("Nie mozna utworzyc bufora wyjsciowego\n", stderr);

exit(3);

}

puts("Podaj nazwe pierwszego pliku zrodlowego (pusty wiersz konczy program):");

while (gets(plik_zro) && plik_zro[0] != '\0')

{

if (strcmp(plik_zro, plik_doc) == 0)

fputs("Nie mozna dopisac pliku do siebie\n",stderr);

else if ((pz = fopen(plik_zro, "r")) == NULL)

fprintf(stderr, "Blad otwarcia pliku %s\n", plik_zro);

else

{

if (setvbuf(pz, NULL, _IOFBF, ROZMIAR_BUF) != 0)

{

fputs("Nie mozna utworzyc bufora wejsciowego\n",stderr);

continue;

}

dopisz(pz, pd);

if (ferror(pz) != 0)

fprintf(stderr,"Blad odczytu pliku %s\n",

plik_zro);

if (ferror(pd) != 0)

fprintf(stderr,"Blad zapisu pliku %s\n",

plik_doc);

fclose(pz);

pliki++;

printf("Plik %s dopisany.\n", plik_zro);

puts("Kolejny plik (pusty wiersz konczy program):");

}

}

printf("Koniec. Dopisano %d plikow.\n", pliki);

fclose(pd);

return 0;

}

void dopisz(FILE *zrodlo, FILE *cel)

{

size_t bajty;

extern char temp[]; /* korzysta z tablicy zewn. temp */

while ((bajty = fread(temp,sizeof(char),ROZMIAR_BUF,zrodlo)) > 0)

fwrite(temp, sizeof (char), bajty, cel);

}

P12-7

/* swobin.c -- dostep swobodny, binarne we/wy */

#include <stdio.h>

#include <stdlib.h>

#define DL_TAB 1000

int main()

{

double liczby[DL_TAB];

double wartosc;

const char * plik = "liczby.dat";

int i;

long poz;

FILE *plikwewy;

/* tworzy zestaw wartosci typu double */

for(i = 0; i < DL_TAB; i++)

liczby[i] = 100.0 * i + 1.0 / (i + 1);

if ((plikwewy = fopen(plik, "wb")) == NULL)

{

fprintf(stderr, "Blad otwarcia pliku %s do zapisu.\n", plik);

exit(1);

}

/* zapisuje tablice do pliku w formacie binarnym */

fwrite(liczby, sizeof (double), DL_TAB, plikwewy);

fclose(plikwewy);

if ((plikwewy = fopen(plik, "rb")) == NULL)

{

fprintf(stderr,

"Blad otwarcia pliku %s do dostepu swobodnego.\n", plik);

exit(1);

}

/* odczytuje z pliku wybrane pozycje */

printf("Podaj indeks z przedzialu 0-%d.\n", DL_TAB - 1);

scanf("%d", &i);

while (i >= 0 && i < DL_TAB)

{

poz = (long) i * sizeof(double); /* oblicza offset */

fseek(plikwewy, poz, SEEK_SET); /* przechodzi w odp. miejsce */

fread(&wartosc, sizeof (double), 1, plikwewy);

printf("Wartosc pod tym indeksem to %f.\n", wartosc);

printf("Kolejny indeks (wyjscie poza przedzial konczy program):\n");

scanf("%d", &i);

}

fclose(plikwewy);

puts("Na razie!");

return 0;

}

DANE-WE

0 0 9 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 2 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 9 0 0 0 0 0 0 0 5 8 9 9 8 5 5 2 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 1 9 8 5 4 5 2 0 0 0 0 0 0 0 0 0

0 0 0 0 9 0 0 0 0 0 0 0 5 8 9 9 8 5 0 4 5 2 0 0 0 0 0 0 0 0

0 0 9 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 4 5 2 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 1 8 5 0 0 0 4 5 2 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 4 5 2 0 0 0 0 0

5 5 5 5 5 5 5 5 5 5 5 5 5 8 9 9 8 5 5 5 5 5 5 5 5 5 5 5 5 5

8 8 8 8 8 8 8 8 8 8 8 8 5 8 9 9 8 5 8 8 8 8 8 8 8 8 8 8 8 8

9 9 9 9 0 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 3 9 9 9 9 9 9 9

8 8 8 8 8 8 8 8 8 8 8 8 5 8 9 9 8 5 8 8 8 8 8 8 8 8 8 8 8 8

5 5 5 5 5 5 5 5 5 5 5 5 5 8 9 9 8 5 5 5 5 5 5 5 5 5 5 5 5 5

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 6 6 0 0 0 0 0 0

0 0 0 0 2 2 0 0 0 0 0 0 5 8 9 9 8 5 0 0 5 6 0 0 6 5 0 0 0 0

0 0 0 0 3 3 0 0 0 0 0 0 5 8 9 9 8 5 0 5 6 1 1 1 1 6 5 0 0 0

0 0 0 0 4 4 0 0 0 0 0 0 5 8 9 9 8 5 0 0 5 6 0 0 6 5 0 0 0 0

0 0 0 0 5 5 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 6 6 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0

DANE-WY

# *%##%*'

# *%##%**'

*%.#%*~*'

# *%##%* ~*'

# *%##%* ~*'

*%#.%* ~*'

*%##%* ~*'

*************%##%*************

%%%%%%%%%%%%*%##%*%%%%%%%%%%%%

#### #################:#######

%%%%%%%%%%%%*%##%*%%%%%%%%%%%%

*************%##%*************

*%##%*

*%##%* ==

'' *%##%* *= =*

:: *%##%* *=....=*

~~ *%##%* *= =*

** *%##%* ==

*%##%*

*%##%*



Wyszukiwarka

Podobne podstrony:
Prat St R10 Horiz
MT st w 06
cukry cz 2 st
Szacowanie zasobów st
Żywienie sztuczne niem St
ch zwyrodnieniowa st
Zaj III Karta statystyczna NOT st
PREZENTACJA 6 badanie ST WSISIZ
BUD»ET PAĐSTWA
FARMAKOLOGIA WYKŁAD III RAT MED ST
MT st w 02a
Semin 3 ST Ps kl Stres
St miedzypaliczkowe blizsze

więcej podobnych podstron