c++ Pytanka trzy

0

Pomylilem dzial, prosze o przeniesienie do Newbie

  1. Jak mógłbym ustalić rozmiar dynamicznej tablicy dotyczącej zawartości z pliku, do której dokładnej ilości znaków nie znam, a nie chcę otrzymać również pustych znaków.

Oczywiście gdy zrobię w ten sposób, to mam krytyczny błąd:

char *str;
fgets(str,ilośćznakow,wskaznikDoPliku);

Chciałbym ustalić w 2 argumencie dokładną ilość znaków, aby nie umieszczać wskaźnika w pierwszym argumencie, lecz już dynamiczną tablicę znaków.

  1. Czy istnieje jakaś funkcja skracająca dany ciąg znaków char? Ustawienie wartości "" na potrzebowany znak chyba nie jest zbytnio profesjonalnym rozwiązaniem.

  2. Czy w tym i podobnych przypadkach należy używać delete[] ?

char *str;
str = new char[sizeof(ciagznakow) + sizeof(cosTamJeszcze)];
0
  1. chcesz stworzyc tablice o rozmiarze pliku, aby za jednym razem wczytac cala zawartosc? przeczytaj najpierw o fgets http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
  2. nie rozumiem
  3. tak, jesli cos utworzyles przez new powinienies takze usunac to przez delete
    poczytaj m.in. o auto_ptr, jesli chcesz czesciowo zautomatyzowac zarzadzanie pamiecia
0
  1. W skrócie: Jak skracać ciąg znaków?

Tak w ogóle dzięki :)

0

Hmm ale mi chodzi skracanie ciągu znaków od potrzebowanego znaku do konca zapotrzebowanego - wiem głupie xD
Dokładniej to chodz mi o to:
Podajesz char, podajesz destination (nowo utworzony ciąg), początek skracania, koniec skracania.

char gg[] = "Dzieci neo";
i chcę skrócić np. od 3 od 6, powinno wyjść: "Dz neo"

0

jak bys napisal ze chcesz wyciac ze stringa kawalek, to kazdyby zrozumial
jaki masz problem
na twoim przykladzie wycinasz od 0 do 3 i od 6 to koniec i laczysz to (chyba strcat)

0

Co z tego jak on od początku tnie, zamiast od tyłu. Mamy powiedzmy: "ala ma kota", w trzeci argument wpisze 5 i zwróci:
"ala m" :/

0

Może jednak istnieje funkcja, która usuwa znaki od - do poszczegolnego znaku?

0

W bibliotece standardowej C++ jest klasa string która udostępnia taką operacje, ale tego się trochę inaczej używa.
Samo wybranie podciagu mozna zrobic przy odrobinie liczenia za pomoca strncpy - ta funkcja kopiuje jeden lancuch znakow do drugiego, z narzuconym limitem na maksymalną ilość znaków która zostanie skopiowana. Jeżeli do tego dodać strlen - sprawdzenie długości ciągu znaków to już da się coś zbudować, tyle tylko że dochodzi arytmetyka na wskaźnikach. Najważniejesze chyba jest to, że jak masz taki lancuch:
char tekst[] = "Ala ma kota";
to:
printf("%s\n", tekst); /* wypisze: Ala ma kota */
ale:
printf("%s\n", tekst + 4); /* wypisze: ma kota */

0

Ojezus kochany, nawet nie pomyślałem logicznie, dzięki :) !!

1 użytkowników online, w tym zalogowanych: 0, gości: 1