» »

[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:


#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…

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++
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.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SMS iz linuxa

Oddelek: Pomoč in nasveti
444745 (2301) Apple
»

[.BAT] Zamenjava besede v datoteki z drugo

Oddelek: Programiranje
102130 (1745) R33D3M33R
»

Ja ja spet "Pozabljeno geslo" (strani: 1 2 )

Oddelek: Pomoč in nasveti
586810 (5255) bosmla
»

[Kubuntu] Minimalna namestitev

Oddelek: Operacijski sistemi
101571 (1262) R33D3M33R
»

Pomoč pri c++ razlaga

Oddelek: Programiranje
192328 (2070) Person

Več podobnih tem