c read

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

c read

Príspevok od používateľa marko365 »

Kód: Vybrať všetko

             char *a;
             long long int dlzka;
              do
	{
	a= (char*) malloc (dlzka++*sizeof(char));
	if ((read(STDIN_FILENO,a,1)) >0)
	;
	else
	break ;
	}
	while (1);

	read(STDIN_FILENO,a,dlzka);
Ja viem ze je to zle ale skuste niekto poradit ako nacitat aj x GB-ovi vstup (pomocou funkcie read) ? Da sa nejako nastavit aby funkcia read vzdy pri zavolani nacitala od zaciatku vstupu ?
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

1. Ta funkcia read je z ktorej kniznice? (predpokladam, ze unistd.h)
2. Vzdy chces citat od zaciatku? Tak pouzi lseek(STDIN_FILENO, 0, SEEK_SET); To ta nastavi na zaciatok suboru.
2. Preco nepouzivas funkcie z stdio.h?
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

Bud sme sa nepochopili :D alebo tvoje riesenie je nespravne . takto(teraz mam nieco nove) mam cyklus v ktorom pouzivam read(na citanie vstupu) po 1 znaku az na koniec vstupu a ak skoncim cyklus tak chcem aby read zacal citat znaky zase od zaciatku vstupu.
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

Hm... no ja Ti neviem, ale ked chces resetovat miesto, kde si v subere tak pouzi seek, v unistd kniznici sa ta funkcia vola lseek, preto som sa pytal, ze odkial ten read je. Ak je to ina kniznica, tak sa moze funkcia na seek volat inak (v stdio je to fseek).
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

No pouzivam kniznice :"#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>" tak neviem :?
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

Tak to mas unistd. Preto bude fungovat funkcia lseek ako som pisal vyssie. Ale uz viem, kde je asi problem. STDIN_FILENO sa pravdepodobne neda seekovat. A teda ani nie je sanca ako sa dostat znova na zaciatok (toto plati ak je STDIN_FILENO vstup z klavesnice).

Len tak mimochodom a= (char*) malloc (dlzka++*sizeof(char)); v cykle, kde a nikdy nefreeujes je obrovsky memory leak.
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

Aha dik to som nevedel (ten free) takze nieje sanca skocit z read na zaciatok ? lebo inac som v peknej ... :D
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

Tak sanci je vela, ulozis si ho cely do pamate, alebo si vytvoris subor do ktoreho budes obsah STDIN_FILENO kopirovat... zalezi od toho naco to chces a ake velke vstupy budes pouzivat.
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

Nie ziadne subory nechcem vytvarat mam iba problem ze na vstup(klavesnica) dostanem x GB vstup a neviem ho nacitat pomocou read :?
Mozno vedel by som o rieseni ale to by som pouzil strasne vela pamate a to ja nedopustim :D sice je pravda ze sa s tym ser.. uz dost dlho ale asi si treba na to iba poriadne sadnut a skusat a googlti :D btw nevies o niecom co by mi pomohlo ?
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

Myslim, ze ti googlenie prilis nepomoze. Vstup z klavesnice nikdy nebol mysleny na nacitavanie radovo GB. Ak to potrebujes citat viackrat tak ma nic ine ako vytvorit docasny subor nenapada. Predsalen do pamate to nenarves a na konzole sa neda seekovat.
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

Velmi si ma nepotesil ale take slovo ako "neda sa" nepoznam :D
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

:) Ved mozno to nejak okasles, ja by som isiel cestou docasnych suborov.
Používateľov profilový obrázok
marko365
Nový používateľ
Nový používateľ
Príspevky: 90
Dátum registrácie: So 03. Júl, 2010, 19:45
Bydlisko: Presov

Re: c read

Príspevok od používateľa marko365 »

Este ma napadla jedna vec linux pracuje z klavesnicou ako zo suborom ci sa mylim ?
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: c read

Príspevok od používateľa pEpinko »

Uplne isty som si neni (linux nepouzivam), ale pravdepodobne to nie je to iste. Tvari sa to ako file descriptor, ale rozdiely tam su (napr. spominany seek).

Návrat na "Programovanie"