Nowe posty

xx Przydatne Linki (2)
Wczoraj o 20:29:27
xx [Rozwiązany] Info w .xsession-errors (2)
2019-07-21, 23:42:04
xx Zapisywanie plików w lokalizacji sieciowej (0)
2019-07-19, 13:22:19
xx Instalacja Cuda - ubuntu 18.04 (2)
2019-07-18, 22:56:34
xx openSuse w Active Directory (0)
2019-07-17, 10:00:42
xx Program dublujacy wpisane wartosci (5)
2019-07-16, 22:47:17
xx Odpowiedni monitor 34 vs 27 4K (4)
2019-07-13, 22:36:57
grin Gdzie kupować gry (13)
2019-07-12, 23:54:15
xx Linux dla programisty + konkretne możliwości. (7)
2019-07-10, 07:31:49
xx Które z tych programów powinienem wybrać? Codzienność / nauka / programowani (15)
2019-07-08, 10:26:01

Autor Wątek: Problem z czcionkami w Gnome i nie tylko..  (Przeczytany 19318 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« dnia: 2006-05-03, 13:30:56 »
Jestem nowy jesli chodzi o programowanie pod linuxem.
Zadano mi takie zadanie:
używając funkcji read należy pobrac 2 łancuchy znakow ze standardowego wejscia oraz wyswietlic ponownie lancuch zawierajacy wiekasza liczbe znakow. W przypadku gdy lancuchy sa rowne, nalezy wyswietlic oba. Do wyswietlenia danych uzyc funkcji write.

Przeczytalem znaleziony gdzies w necie opis funkcji read i write, ale nie wiem jak zastosowac to do tego zadania. Byc moze dla niektorych osob takie zadanie to pestka, ale moze pomogl by mi ktos zrobic to zadanie. Albo chociaz jakies przykladowe wykorzystanie write i read, ktore dotyczylo by mojego zadania.

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #1 dnia: 2006-05-03, 14:02:14 »
2006-05-03 13:30:56 nstn napisał:

> Jestem nowy jesli chodzi o programowanie pod linuxem.
 > Zadano mi takie zadanie:
 > używając funkcji read należy pobrac 2 łancuchy znakow ze standardowego wejscia oraz wyswietlic
 > ponownie lancuch zawierajacy wiekasza liczbe znakow. W przypadku gdy lancuchy sa rowne, nalezy
 > wyswietlic oba. Do wyswietlenia danych uzyc funkcji write.
 >
 > Przeczytalem znaleziony gdzies w necie opis funkcji read i write, ale nie wiem jak zastosowac
 > to do tego zadania. Byc moze dla niektorych osob takie zadanie to pestka, ale moze pomogl by mi
 > ktos zrobic to zadanie. Albo chociaz jakies przykladowe wykorzystanie write i read, ktore
 > dotyczylo by mojego zadania.

http://rtfm.killfile.pl

C ?
masz to na jakies zadanie domowe ? jesli tak, to zapewne cala potrzebna wiedze ktos ci juz staral sie co najmniej raz przekazac - trzeba bylo uwazac...

a moze zaproponuj jakas wersje wyjsciowa ? przedyskutujemy razem... moze dojdziemy do czegos sensownego, a ty sie przynajniej choc troche nauczysz...

... na gotowe rozwiazanie raczej bym w tym miejscu nie liczyl ;-) chociaz z pewnoscia dla wielu stalych bywalcow zadanie to jest blahostka...

Offline Dominik Przyborowski

  • Users
  • Guru
  • *****
  • Wiadomości: 747
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #2 dnia: 2006-05-03, 14:27:43 »
Jak to nie wiesz. Pobierasz dane wejsciowe w postaci dwóch łańcuchów, sprawdzasz warunkiem długości i wypisujesz.
A tu o funkcjach read() i write()
man read
man 2 write

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #3 dnia: 2006-05-03, 22:07:12 »
udalo mi sie do tej pory wymyslec cos takiego:

#include
#include
#include

int main()
{
size_t length;
char * buffer;
buffer=(char *)malloc(length);
ssize_t bytes_read;
int fd;

bytes_read = read(fd, buffer, length);
//wczytane dane wrzucimy do buffer

//tu trzeba dac warunki za pomoca if , a dalej write
write(fd, buffer, length);
return 0;
}


ale naprawde nie wiem jak mam pobrac dane wejsciowe (w postaci dwóch łańcuchów)

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #4 dnia: 2006-05-03, 23:40:49 »
2006-05-03 22:07:12 nstn napisał:

 > size_t length;
 > char * buffer;
 > buffer=(char *)malloc(length);
 > ssize_t bytes_read;
 > int fd;
 >
 > bytes_read = read(fd, buffer, length);
 > //wczytane dane wrzucimy do buffer
 >
 > //tu trzeba dac warunki za pomoca if , a dalej write
 > write(fd, buffer, length);
 > return 0;
 > }

no i super...
nie sadzisz, ze zmienne trzebaby zainicjalizowac ?

czy uzycie read i write jest obligatoryjne (sa funkcje lepiej nadajce sie do twojego zadania) ?

dlaczego bufor alokujesz dynamicznie (nie oznacza to, ze jest to niepoprawne... tylko napisz dlaczego) ?
czy na pewno jeden bufor ci wystarczy ?

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #5 dnia: 2006-05-04, 19:26:54 »
jak mam pobrac dane wejsciowe (w postaci dwóch łańcuchów)

bo tego w zasadzie nie wiem.

Z konsoli to bym uzyl cat zeby wpisac do pliku, a tu????

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #6 dnia: 2006-05-04, 19:30:20 »
2006-05-03 23:40:49 chmooreck napisał:


 > czy uzycie read i write jest obligatoryjne (sa funkcje lepiej nadajce sie do twojego zadania)
 > ?
 >
 > dlaczego bufor alokujesz dynamicznie (nie oznacza to, ze jest to niepoprawne... tylko napisz
 > dlaczego) ?
 > czy na pewno jeden bufor ci wystarczy ?


1. read i write muszą byc uzyte
2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow
3.byc moze potrzebowalbym dwoch buforow, w koncu mają byc dwa ciągi znakow
4. ale jak wprowadzic te dane? Nie kumam tego

Offline jan karwowski

  • Users
  • Guru
  • *****
  • Wiadomości: 844
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #7 dnia: 2006-05-04, 20:25:22 »
2006-05-04 19:30:20 nstn napisał:

 > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow

Mhm... Tylko, jeśli dobrze rozumiem, najpierw musisz wczytać ten ciąg, żeby
policzyć jego długość, więc jest tu problem...
Ponadto w Twoim kodzie nie wiadomo skąd bierzesz to length (jest deklaracja
zmiennej, ale gdzie nadajesz jej wartość?)

Nie masz w  specyfikacji zadania podanych jakiś maksymalnych długości ciągów?

Potrafisz napisać ten program uzywając stdio.h ?

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #8 dnia: 2006-05-04, 20:37:53 »
2006-05-04 19:30:20 nstn napisał:

 > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow

to teraz mi powiedz jakiej dlugosci bufor zaalokowales... bo nie daje mi to spokoju ;-)

 > 4. ale jak wprowadzic te dane? Nie kumam tego

poczytaj co to jest ten fd (file descriptor)...

Offline Andrzej Oczkowicz

  • Users
  • Użytkownik
  • **
  • Wiadomości: 92
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #9 dnia: 2006-05-04, 22:02:53 »
ja kiedys napisalem takie cos

zwraca zaalokowany dynamicznie lancuch, musisz go zwolnic za pomoca free() w bsize jest ilosc wczytanych danych
 
void *intobuff(int *bsize)
{
        if (!bsize)
                return NULL;

        char stat_b[1024];
        int stats = 1024;

        *bsize = 0;
        int s;
        char buf;
        s = 0;
        int g_size = 0;
        int w_size = 0;
        void *res = NULL;
        int end;
        while (1){
          fread(&buf, 1, 1, stdin);
                end = feof(stdin);
                if (!buf){
                        fprintf(stderr, \\"HTMLP: W buforze wejsciowym na pozycji %d pojawil sie znak konca pliku 0x0, a nie wczytano jescze wszystkiego!n\\", g_size);
                        end = 1;
                }
                stat_b = buf;
                if ( (s >= stats) || ( end ) ){
                        if (res){
                                res = realloc(res, g_size);
                        } else
                        {
                                if ( s < stats)
                                        res = malloc(s);
                                else
                                        res = malloc(stats);
                        }
                        memcpy(res + w_size, &stat_b[0], s);
                        w_size += s;
                        if (end)
                                break;
                }
                s++;
                g_size++;
                if (s > stats)
                        s = 0;
        }
        *bsize = g_size;
        return res;
}


troche to zagmatwane, i trzeba by to deczko przerobic ale moze sie przyda...

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #10 dnia: 2006-05-04, 22:59:55 »
wydaje mi sie, ze autorowi zadania chodzilo o wykorzysztanie funkcji read i write, a nie automatyczna alokacje bufora odpowiedniej wielkosci ;-)

Offline Andrzej Oczkowicz

  • Users
  • Użytkownik
  • **
  • Wiadomości: 92
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #11 dnia: 2006-05-05, 11:22:32 »
2006-05-04 22:59:55 chmooreck napisał:

> wydaje mi sie, ze autorowi zadania chodzilo o wykorzysztanie funkcji read i write, a nie
 > automatyczna alokacje bufora odpowiedniej wielkosci ;-)

no wiem :-)
ale to jest tylko przyklad, a nie rozwiazanie tego konkretnego zadania.

Poza tym jest tam uzycie read(), wlasciwie fread() ale mozna by to zastapic :P

i na koniec taka dobra rada dla @nstn manuale systemowe to podstawa, tam jest praktycznie wszystko :)

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #12 dnia: 2006-05-05, 21:23:04 »
na kiedy masz zrobic to zadanie ?

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #13 dnia: 2006-05-05, 22:06:18 »
2006-05-05 21:23:04 chmooreck napisał:

> na kiedy masz zrobic to zadanie ?
 na niedziele ale moze kumpel dzisiaj cos tez wymysli i moze dorzuci tu kilka swoich zlotych mysli

aha, i jeszcze jedno
nikt mi nic nigdy nie tłumaczyl na ten temat

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Problem z czcionkami w Gnome i nie tylko..
« Odpowiedź #14 dnia: 2006-05-05, 23:39:22 »
2006-05-04 20:37:53 chmooreck napisał:

> 2006-05-04 19:30:20 nstn napisał:
 >
 >  > 2. bufor alokuje dynamicznie bo nie wiem ile znakow bedzie mial ten ciąg znakow
 >
 > to teraz mi powiedz jakiej dlugosci bufor zaalokowales... bo nie daje mi to spokoju ;-)

??

 >  > 4. ale jak wprowadzic te dane? Nie kumam tego
 >
 > poczytaj co to jest ten fd (file descriptor)...

w szczegolnosci czy ma jakis zwiazek ze standardowym wejsciem i wyjsciem ?


 > nikt mi nic nigdy nie tłumaczyl na ten temat

to najwyzszy czas zajrzec do manuali ;-)

P.S.
WYJATEK (tylko dla mstn, dla tego watku): jesli chcesz, to mozesz przeslac mi na maila twoje gg, moze akurat znajde chwilke, zeby ci pomoc... potem OBOWIAZKOWO dzialajacy program wklej tu, na forum, laczie z komentarzem co sie skad wzielo... ;-)