Forum » Programiranje » [C]Dinamičen string
[C]Dinamičen string
Steinkauz ::
Sm iskal mal po netu pa ne najdem kej pametnega. Iščem kodo, ki bi mi omogočala, da se nardi tabela tolk dolga kolker bo uporabnik vnesel znakov.
TheHijacker ::
Nekako tako:
Lepši izpis:
http://pastebin.com/f1858702ahttp://pastebin.com/f1858702a
Seveda bi moral dodati tudi preverjanje če je bila inicializacija spomina uspešna. Poglej si tutorial na tej strani:
Dynamic memory
** 4x edit zaradi raznih popravkov kode :)
#include "iostream"
#include "new"
#include "conio.h"
using namespace std;
int main()
{
int velikost;
cout < < "Vnesi velikost tabele: ";
cin >> velikost;
int *tabela = new int[velikost];
for (int x = 0; x < velikost; x++ )
{
tabela[x] = x+1;
}
for (int x = 0; x < velikost; x++ )
{
cout < < tabela[x];
if (x+1 < velikost)
{
cout < < ", ";
}
}
delete[] tabela;
_getch();
return 0;
}
Lepši izpis:
http://pastebin.com/f1858702ahttp://pastebin.com/f1858702a
Seveda bi moral dodati tudi preverjanje če je bila inicializacija spomina uspešna. Poglej si tutorial na tej strani:
Dynamic memory
** 4x edit zaradi raznih popravkov kode :)
http://www.google.si
Zgodovina sprememb…
- spremenil: TheHijacker ()
Tutankhamun ::
/* Allocate space for an array with ten elements of type int. */
int *ptr = malloc(10 * sizeof (int));
if (ptr == NULL) {
/* Memory could not be allocated, the program should handle the error here as appropriate. */
}
/* If ptr is not NULL, allocation succeeded. */
/* free allocated memory */
free(ptr);
On rab C ne C++
int *ptr = malloc(10 * sizeof (int));
if (ptr == NULL) {
/* Memory could not be allocated, the program should handle the error here as appropriate. */
}
/* If ptr is not NULL, allocation succeeded. */
/* free allocated memory */
free(ptr);
On rab C ne C++
AMD Phenom QUAD 9950 Black Edition, 8GB
fiction ::
Problem pri vsem tem je, da nikoli ne ves kdaj bo uporabnik nehal tipkati,
poleg tega pa si moras vsak znak zapomniti.
Ce bi uporabnik najprej rekel vnesel bom 100 znakov, bi bilo lazje ker bi si buffer
lahko dinamcino pripravil. V C-ju recimo z malloc().
Tu pa rabis neskoncno prostora. Ker je to rahlo neprakticno, lahko naredis tako, da
najprej recimo alociras prostor za 16 znakov, potem ko zacne zmanjsevati alociras
vecji prostor (recimo 32), tja skopiras tiste elemente iz prve tabele ter veselo
polnis naprej vecjo tabelo.
V STL (C++) obstaja vector, ki je tocno to kar rabis: array, ki dinamicno raste, v C-ju
se bos moral pa sam pozabavati z implementacijo necesa podobnega.
poleg tega pa si moras vsak znak zapomniti.
Ce bi uporabnik najprej rekel vnesel bom 100 znakov, bi bilo lazje ker bi si buffer
lahko dinamcino pripravil. V C-ju recimo z malloc().
Tu pa rabis neskoncno prostora. Ker je to rahlo neprakticno, lahko naredis tako, da
najprej recimo alociras prostor za 16 znakov, potem ko zacne zmanjsevati alociras
vecji prostor (recimo 32), tja skopiras tiste elemente iz prve tabele ter veselo
polnis naprej vecjo tabelo.
V STL (C++) obstaja vector, ki je tocno to kar rabis: array, ki dinamicno raste, v C-ju
se bos moral pa sam pozabavati z implementacijo necesa podobnega.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SMS iz linuxaOddelek: Pomoč in nasveti | 4745 (2301) | Apple |
» | [.BAT] Zamenjava besede v datoteki z drugoOddelek: Programiranje | 2130 (1745) | R33D3M33R |
» | Ja ja spet "Pozabljeno geslo" (strani: 1 2 )Oddelek: Pomoč in nasveti | 6810 (5255) | bosmla |
» | [Kubuntu] Minimalna namestitevOddelek: Operacijski sistemi | 1571 (1262) | R33D3M33R |
» | Pomoč pri c++ razlagaOddelek: Programiranje | 2328 (2070) | Person |