Subject: Potoki
Mam do napisania program, który będzie działał‚ tak jak polecenie unixowe wc w oparciu o potoki (operator |), tylko nie bardzo rozumiem o co tu chodzi .
wiem, że wc - wypisuje liczbę bajtółw, słółw i linii w plikach (po wybraniu opcj lub wszystkie na raz)
dla liczenia bajtów napisałem coś takiego :
/*program liczy znaki w pliku 'plik' Ilosc znakow to rownoczesnie
wielkosc pliku w bajtach*/
#include <stdlib.h> //wykorzystanie dla funkcji exit()
#include <fcntl.h>
#define BUFROZ 1
main()
{
int desp; //deskryptor pliku
char buf[BUFROZ];
char buf2[BUFROZ];
int czytaj;
int licz_zn;
char t;
/*
*/
if((desp = open("plik", O_RDONLY)) == -1) //w wypadku błędu funkcja
//open zwraca -1
{
printf("Nie moge otworzyc pliku 'plik' ");
exit(1);
}
while((czytaj = read(desp, buf, BUFROZ)) >0)
licz_zn+=czytaj;
printf("Ilosc znakow w pliku wynosi : %d", licz_zn);
close(desp);
exit(0);
}
Problem pojawia się przy liczeniu słów, chciałbym porównywać element z bufora jakiś np. b w instrukcji np. if( b [ i ] ==' ' && b[i+1] != ' '){ ilosc_wyrazow= ilosc_wyrazow +1}
tylko nie wiem jak z bufora wyciągnąć to b. Możnaby zrobić to przy użyciu ifstream ale to już chyba nie będzie w oparciu o potoki ?
A tego polecenia to już zupełnie nie rozumiem : Przepisac ostatni program tak, aby dzialal w trybie interaktywnym. Przykladowo wprowadzamy lancuch oraniczony konfigurowalnymi z linii komend tagami, (nie przerywamy po wcisnieciu enter, konieczne napotkanie taga) a wc robi swoje... i od nowa.
Czy mógłby to ktoś przełożyć na Polski
wiem, że wc - wypisuje liczbę bajtółw, słółw i linii w plikach (po wybraniu opcj lub wszystkie na raz)
dla liczenia bajtów napisałem coś takiego :
/*program liczy znaki w pliku 'plik' Ilosc znakow to rownoczesnie
wielkosc pliku w bajtach*/
#include <stdlib.h> //wykorzystanie dla funkcji exit()
#include <fcntl.h>
#define BUFROZ 1
main()
{
int desp; //deskryptor pliku
char buf[BUFROZ];
char buf2[BUFROZ];
int czytaj;
int licz_zn;
char t;
/*
*/
if((desp = open("plik", O_RDONLY)) == -1) //w wypadku błędu funkcja
//open zwraca -1
{
printf("Nie moge otworzyc pliku 'plik' ");
exit(1);
}
while((czytaj = read(desp, buf, BUFROZ)) >0)
licz_zn+=czytaj;
printf("Ilosc znakow w pliku wynosi : %d", licz_zn);
close(desp);
exit(0);
}
Problem pojawia się przy liczeniu słów, chciałbym porównywać element z bufora jakiś np. b w instrukcji np. if( b [ i ] ==' ' && b[i+1] != ' '){ ilosc_wyrazow= ilosc_wyrazow +1}
tylko nie wiem jak z bufora wyciągnąć to b. Możnaby zrobić to przy użyciu ifstream ale to już chyba nie będzie w oparciu o potoki ?
A tego polecenia to już zupełnie nie rozumiem : Przepisac ostatni program tak, aby dzialal w trybie interaktywnym. Przykladowo wprowadzamy lancuch oraniczony konfigurowalnymi z linii komend tagami, (nie przerywamy po wcisnieciu enter, konieczne napotkanie taga) a wc robi swoje... i od nowa.
Czy mógłby to ktoś przełożyć na Polski


parsival
Show profile
Link to this post