Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C - Program zmieniający wyraz na ciąg *

reyes123 20 Sty 2014 22:54 822 5
  • #1 20 Sty 2014 22:54
    reyes123
    Poziom 7  

    Witam,

    Mam problem z napisaniem programu w C. Ma on skopiować zawartość pliku txt podanego przez paramentr do drugiego pliku (również podanego przez parametr) i zastąpić wybrany wyraz asteriksami (ilość asteriksów zależna od długości wyrazu). Do tej pory udało mi się odczytać plik txt i wypisać jego zawartość i tutaj utknąłem. Za każdą pomoc bardzo dziękuję

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodano po 23 [minuty]:

    Jeśli nie chce wypisywać tylko skopiować to takie coś będzie działać?

    Kod: c
    Zaloguj się, aby zobaczyć kod


    BTW mam również problem z parametrami w DevC++. Jeśli miałem 1 plik to w parameters wystarczyło, że wpisałem ścieżkę do niego. A co mam wpisać w parameters jeśli potrzebuje dwóch plików jak w programie wyżej?

    Dodano po 1 [godziny] 35 [minuty]:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dobra, kopiowanie ogarnąłem. Teraz jakaś podpowiedź odnośnie zamiany podanego wyrazu na *. Ma być tyle gwiazdek ile wyraz ma znaków. Jakaś pomoc?

    Dodano po 1 [godziny] 15 [minuty]:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Takie coś wykombinowałem, tylko nie wiem gdzie mam błędy. Mało co umiem jeśli chodzi o programowanie, dlatego dla niektórych mogą to być banały.[/code]

    0 5
  • #2 20 Sty 2014 23:13
    the_fifth_horseman
    Poziom 32  

    strncpy() kopiuje n znaków ze źródła i dopełnia zerami. Nie służy powtarzaniu znaku n razy.

    Żeby ustawić ciąg bajtów w pamięci na tą samą wartość, użyj memset(): http://www.cplusplus.com/reference/cstring/memset/

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #3 20 Sty 2014 23:55
    reyes123
    Poziom 7  

    ale memset nie zamieni mi słowa na ciąg asterisków

    0
  • #4 21 Sty 2014 01:40
    the_fifth_horseman
    Poziom 32  

    To może kolega wyjaśnić co w takim razie robi memset() jeżeli zdaniem kolegi nie ustawia zadanej liczby bajtów pod zadanym adresem na zadaną wartość?

    0
  • #5 21 Sty 2014 01:50
    reyes123
    Poziom 7  

    tak wywnioskowałem z przykładu z podanego linku, nie opierałem się na własnej wiedzy, bo dopiero zaczynam programowanie i nie spotkałem się z memset

    0
  • #6 21 Sty 2014 02:14
    the_fifth_horseman
    Poziom 32  

    Kolega nie przeczytał opisu, tylko zerknął na przykład i 'wywnioskował' że skoro przykład nie jest dokładnym rozwiązaniem którego chciał to funkcja się nie nadaje? Przeczytać ze zrozumieniem:

    Cytat:
    void * memset ( void * ptr, int value, size_t num );
    Fill block of memory
    Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).

    0