» »

[C] Kazalec tipa char na podatke iz datoteke

[C] Kazalec tipa char na podatke iz datoteke

purki ::

Imam funkcijo

void Send(char *, int);


Ta funkcija pošlje int znakov od mesta kamor kaže char.

Odprl sem neko datoteko in hočem da bi kazalec char kazal na nek znak v tej datoteki.

Upam da razumete ;)

Vesoljc ::

niti ne :\

kaj dejansko te zanima?
Abnormal behavior of abnormal brain makes me normal...

purki ::

Funkcija Send sprejme kot parameter kazalec na tip Chair. Jaz sem odprl datoteko s fOpen.

pFile = fopen (szFile,"rb");

Če hočem poslati 200 znakov iz datoteke kličem funkcijo tako

SendData(pFile, 200);

a dobim warning:

warning C4133: 'function' : incompatible types - from 'struct _iobuf *' to 'char *'

Treba je pač definirat nek kazalec tipa char na nek znak v tej datoteki. Jaz teh kazalcev ne razumem čist dobro zato pa sprašujem vas

Matako ::

Kazalci kažejo na lokacije v (virtualnem) pomnilniku, ne datotekah. Obstaja sicer POSIX funkcija mmap(), kjer lahko datoteko preslikaš v pomnilnik... samo to ni to kar hočeš.

Kar ti iščeš je fseek() - ta funkcija definirana v stdio.h postavi pozicijo naslednje bralno pisalne operacije na neko določeno mesto v datoteki, če je možno.
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()

Vesoljc ::

jah ne gre to kr tko...

tukaj imas pac dva kazalca na povsem razlicna tipa. ti moras najprej prebrat kos ali celo vsebino datoteke v pomnilnik, nato pa kazalec, ki kaze na ta tvoj pomnilnik, podas funkciji.

za branje lahko uporabis fread
Abnormal behavior of abnormal brain makes me normal...

Zgodovina sprememb…

  • spremenil: Vesoljc ()

purki ::

A bi lahko en example, si lažje predstvljam

Se opravičujem, example je v povezavi ki si mi jo dal

TNX

Zgodovina sprememb…

  • spremenilo: purki ()

Matako ::

Aja narobe sem razumel. Prehitro prebral.

Recimo, da hočeš prebrati maxsize znakov iz datoteke foo.bar, primer
..

FILE f* = fopen("foo.bar", "r");

if (f) {

char *buf = malloc(maxsize, sizeof(char));

if (fread(buf, 1, maxsize, f) != maxsize)

problem("napaka (prebrano premalo znakov)");

else
naredinekaj(buf);

fclose(f);

free(buf);

}

...


No moj prešnji nasvet s fseek() je še vedno na mestu - mogoče pa ne želiš brati od začetka ...
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()


Vredno ogleda ...

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

NetBeans - C - branje iz datoteke

Oddelek: Programiranje
11977 (914) nightrage
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51464 (1359) DavidJ
»

[C/C++] pointerji in reference

Oddelek: Programiranje
112020 (1844) Matako
»

[NALOGA][NASM] problem pri povezovanju s C-jevskimi funkcijami

Oddelek: Programiranje
61379 (1237) c00L3r
»

c++ datoteke

Oddelek: Programiranje
464044 (3533) Vesoljc

Več podobnih tem