[ Príspevkov: 26 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava

zdravim,
robim projekt v ccko do skoly a neviem si dat radu s pointerom na pole.

mam textovy subor s velkym mnozstvom dat, potrebujem z neho dostat realne cisela (vyplaty) v kazdom siestom riadku (+-1000 cisel) a potrebujem ich zapisat do pola, ktore bude dostupne pre ostatne funkcie

ukazka vstupneho suboru:
Kód:
1
Ronald Carpenter
1
2176.01
07202016

2
Catherine Jenkins
1
1058.32
05192008

potrebujem cisla z tretieho riadku kazdeho jedneho "zaznamu"

funkcia na zapis:
Kód:
void platarray(int *pocet, double **platy)
{
   *pocet = 0;
   FILE *f;
   f = fopen("zamestnanci.txt", "r");
   if ((f == NULL)
   {
      printf("Neotvoreny subor\n");
      return;
   }
   char line[32];
   double salary;
   char c;
   c = getc(f);
   while (c != EOF)
   {
      if (c != '\n')
      {
         ungetc(c, f);
      }
      fgets(line, 6, f);
      fgets(line, 33, f);
      fgets(line, 3, f);
      fgets(line, 10, f);
      sscanf(line, "%lf", &salary);                  //nacitanie platu do double
      fgets(line, 11, f);
      c = getc(f);
      *pocet = *pocet + 1;                         //zistenie poctu vsetkych ludi v subore
   }
   fclose(f);
   *platy = (double*)malloc(*pocet * sizeof(double));     //alokacia pamate pre pole s prvkami 0-'pocet'
   f = fopen("zamestnanci.txt", "r");
   if ((f == NULL)
   {
      printf("Neotvoreny subor\n");
      return;
   }
   int a; a = 0;
   c = getc(f);
   while (c != EOF)
   {
      if (c != '\n')
      {
         ungetc(c, f);
      }
      fgets(line, 6, f);
      fgets(line, 33, f);
      fgets(line, 3, f);
      fgets(line, 10, f);
      sscanf(line, "%lf", &salary);                           //nacitanie platu do double
      fgets(line, 11, f);
      c = getc(f);
      *platy[a] = salary;
      a = a + 1;
   }
   fclose(f);

   int i; i = 0;
   for (i = 0; i < *pocet; i++)                        //vypis pola
   {
      printf("plat[%d] = %lf\n", i, *platy[i]);
   }
}


main:
Kód:
double *platy;
platarray(&prikazV, &pocet, &*platy);             //tu mi hadze error

error: argument of type "double *" is incompatible with parameter of type "double **

skusal som uz vselico, od obeda prezeram google a nic. vedel by mi s tymto niekto poradit? vopred vdaka


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11

Pozeral som ten kod len tak zbezne ale ked prerobis "&*platy" na "&platy", tak by to mohlo ist. "platy" je typu "double *" a tym & z neho spravis double**. "&*platy" by vlastne malo byt to iste ako platy lebo zoberes hodnotu na adrese platy, pomocou *, a hned na to si & vypytas jej adresu.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 06.11.2016 9:22 | [C] pointer na pole vo vedlajsej funkcii

magic má asi pravdu, len to napíšem trochu zrozumeteľnejšie, lebo to magicove som mal aj ja problém pochopiť :D

& je referencia
* je dereferencia
Keď napíšeš &*platy, tak & a * sa ti navzájom vyrušia (robíš referenciu dereferencie) a ostane ti len platy.
Keďže samotná premenná platy je typu double*, tak potrebuješ adresu práve tejto premennej, čiže jednoducho &platy. Typovo to znamená &(double*) => adresa double* => vznikne typ double**


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11
NapísalOffline : 06.11.2016 13:46 | [C] pointer na pole vo vedlajsej funkcii

Este mala pripomienka: "getc()" vracia "int" a ten sa nemusi zmestit do "char".


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 15:47 | [C] pointer na pole vo vedlajsej funkcii

diki, uz nehadze errory ale po spusteni kompilacie a nacitani prveho prvku do pola prestane reagovat. pri tomto riadku:
Kód:
*platy[a]=salary;


chybova hlaska z debugu:
Citácia:
Exception thrown at 0x0040682F in ConsoleApplication1.exe: 0xC0000005: Access violation writing location 0xCCCCCCCC.

getc funguje ako ma :) asopn zatial

EDIT:
po pridani pomocneho pola priamo vo funkcii a nakonici jeho prekopirovani do pointeru funguje, len mi to pride ako nejake divne riesenie:
Kód:
void platarray(int *pocet, double **platy)
...
...      //zistenie poctu pracovnikov
...
double *temp;
temp = (double *)malloc(*pocet * sizeof(double));
...
temp[a] = salary;      //zapis platov do pola
...
*platy = temp;


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 06.11.2016 16:47 | [C] pointer na pole vo vedlajsej funkcii

Miso problém tam môže byť v priorite operátorov - viz http://en.cppreference.com/w/c/language/operator_precedence
=> Najprv sa vyhodnocujú zátvorky a až potom hviezdička. Takže to asi robí niečo iné, než by si chcel.

+ Kopírovať celé pole netreba. Stačilo by len prehodiť si to do inej premennej správneho typu (nech nemusíš vo funkcii všade písať hviezdičku).


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 18:24 | [C] pointer na pole vo vedlajsej funkcii

ten prikaz sme dostali na prednaske ako prikaz pre alokovanie pamate pre dynamicke polia, ja som v tom dost mimo

no tak som to myslel, nakonci funkcie som cele pole prehodil po pointera co siel do mainu

vecer este skusim to prehodenie nazaciatku a odpadne mi tym par riadkov kodu


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 06.11.2016 18:39 | [C] pointer na pole vo vedlajsej funkcii

Teda pozor, ak pred tou funkciu žiadne pole nealokuješ (cez malloc), tak to samozrejme musíš v tej funkcií. Inak povedané aspoň raz ho alokovať musíš. Buď pred funkciou a v nej už s ním pracuješ, alebo v tej funkcií a vrátiš novo alokované pole.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 22:30 | [C] pointer na pole vo vedlajsej funkcii

hej, uz som si vsimol, aj ho alokoval. vdaka

este mam jednu otazku, mame v zadani tuto vetu:
Citácia:
Ak už bolo pole predtým načítané, je najprv dealokované, a potom sa vytvorí nové.
a celkom nechapem co tym myslia :) ja som v tom, ze ak uz bole alokovane (neviem akou podmienkou zistit), cez prikaz "free(platy);" pole dealokujem a znova vykonam alokaciu?


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11
NapísalOffline : 06.11.2016 22:47 | [C] pointer na pole vo vedlajsej funkcii

Mozes pouzit aj realloc


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 22:48 | [C] pointer na pole vo vedlajsej funkcii

usetrim jeden riadok :D
a nevies akou podmienkou zistit ci uz bolo pole alokovane?


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11
NapísalOffline : 06.11.2016 22:53 | [C] pointer na pole vo vedlajsej funkcii

Ked pouzijes realloc, tak nepotrebujes vediet, ci to bolo alokovane. Neviem ci existuje bezpecny sposob, ako zistit, ci je alokovane alebo nie.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 23:23 | [C] pointer na pole vo vedlajsej funkcii

a pockaj, zle citam zadanie :D ako zistim ci uz bolo pole niekedy davnejsie nacitane? bude to nieco ako
Kód:
if (*platy != NULL)
{
   free(*platy);
}
*platy = (double *)malloc(*pocet * sizeof(double));   //alokacia

alebo uplne inac?


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11
NapísalOffline : 06.11.2016 23:32 | [C] pointer na pole vo vedlajsej funkcii

Nacitane znamena co ? Ak spravis malloc a potom free, tak v tom poitery zstane aj tak nieco ine ako NULL.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 06.11.2016 23:38 | [C] pointer na pole vo vedlajsej funkcii

boli donho nacitane hodnoty (tato funkcia uz bola v programe raz vykonana). aspon tak to chapem ja


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 22.08.11
Prihlásený: 14.12.23
Príspevky: 2361
Témy: 11 | 11

Tak to si mozes teoreticky ulozit niekde do premenej, ze to uz bolo raz vykonane.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 07.11.2016 8:52 | [C] pointer na pole vo vedlajsej funkcii

To, či je pole fyzicky alokované alebo nie, nezistíš. Musíš sa spoliehať na to, že programátor ho po uvoľnení vyNULLoval (čo by sa malo robiť VŽDY, a nezabudnúť aj pri deklarácií premennej) a otestovať pointer na hodnotu NULL.
Ísť na to cez hodnoty nemôžeš, pretože ak prisúpiš na prvý prvok uvoľneného poľa, tak v lepšom prípade dostaneš rovnaký prvok (akoby uvoľnené nebolo - pointer stále ukazuje na rovnaké miesto, ktoré ešte nebolo prepísané), v horšom dostaneš nejakú náhodnú hodnotu (z ktorej tiež nič nezistíš) a v najhoršom prípade program spadne (operačný systém ho zakilluje).


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 07.11.2016 9:06 | [C] pointer na pole vo vedlajsej funkcii

tak ked sa to zistit neda, skusil som to cez premennu ktora po vykonani funkcie zmeni hodnotu na true. potom som tu alokaciu vyriesil takto:
Kód:
if (*prikazN == false)
   {
      temp = (double *)malloc(*pocet * sizeof(double));
   }
   if (*prikazN==true)
   {
      free(temp);
      temp = (double *)malloc(*pocet * sizeof(double));
   }

a po opatovnom spusteni funckie program prestane odpovedat


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 07.11.2016 10:37 | [C] pointer na pole vo vedlajsej funkcii

Poprosím celý kód, včetne deklarácie temp.
A inak poznáme aj if-else ;)


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 07.11.2016 10:47 | [C] pointer na pole vo vedlajsej funkcii

to hej, nejako som to vtedy pisal doradu podmeinky, else este pridam :)

kod v aktualnom stave:
Kód:
void platarray(bool *prikazV, bool *prikazN, int *pocet, double *(*platy))
{
   *pocet = 0;
   FILE *f;
   f = fopen("zamestnanci2.txt", "r");
   if ((f == NULL) || (*prikazV == 0))
   {
      printf("Neotvoreny subor\n");
      return;
   }
   char line[32];
   char c;
   c = getc(f);
   while (c != EOF)      //cyklus na zistenie poctu ludi v subore
   {               
      if (c != '\n')
      {
         ungetc(c, f);
      }
      fgets(line, 6, f);
      fgets(line, 33, f);
      fgets(line, 3, f);
      fgets(line, 11, f);
      fgets(line, 11, f);
      c = getc(f);
      *pocet = *pocet + 1; //zistenie poctu vsetkych ludi v subore
   }
   printf("pocet ludi %d\n", *pocet);
   fclose(f);
   f = fopen("zamestnanci2.txt", "r");
   if ((f == NULL) || (*prikazV == 0))
   {
      printf("Neotvoreny subor\n");
      return;
   }
   int a; a = 0;
   double salary;
   double *temp;
   if (*prikazN == false)
   {
      temp = (double *)malloc(*pocet * sizeof(double));
   }
   if (*prikazN==true)
   {
      free(temp);
      temp = (double *)malloc(*pocet * sizeof(double));
   }
   
   c = getc(f);
   while (c != EOF)            //prechadzanie suboru este raz na nacitanie platov do pola
   {
      if (c != '\n')
      {
         ungetc(c, f);
      }
      fgets(line, 6, f);
      fgets(line, 33, f);
      fgets(line, 3, f);
      fgets(line, 11, f);
      sscanf(line, "%lf", &salary);          //nacitanie platu do float-u
      printf("%.2lf\n", salary);
      fgets(line, 11, f);
      c = getc(f);
      temp[a] = salary;          //vlozenie platu do pola
      a = a + 1;
   }
   fclose(f);
   *platy = (double *)malloc(*pocet * sizeof(double));
   *platy = temp;
   *prikazN = true;
}
int main()         //skrateny main
{
   char c;
   bool prikazV; prikazV = false;
   bool prikazN; prikazN = false;
   int pocet; pocet = 0;
   double *platy;
   while ((c=getchar()) !='K')
   {
      switch (c)
                {
      case 'N':
         platarray(&prikazV, &prikazN, &pocet, &platy);
         int i; i = 0;
         for (i = 0; i < pocet; i++)
         {
            printf("plat[%d] = %.2lf\n", i+1, platy[i]);
         }

mozno je tam par blbych chyb ale aspon ide (az na tu dealokaciu) :-)


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 07.11.2016 11:21 | [C] pointer na pole vo vedlajsej funkcii

Nooo... tak pekne poporiadku. Nejaké maličkosti radšej aj vynechám :D

Premennej platy chýba inicializácia. Ak by si ju mal, nepotrebuješ tie hrozné booly s napohľad nič-nehovoriacim názvom.
Kód:
double *platy = NULL; //pole je prázdne, nepoužiteľné


Premennú prikazN takto môžeš úplne ostrániť. Máš predsa NULL
Kód:
if( (*platy) != NULL )
    free(*platy); //uvolním staré pole
    *platy = NULL; //nastavím na NULL ako indikáciu, že pole je nepoužiteľné
}
double* temp = malloc(...); //každopádne naalokujem nové pole


Keďže ale *platy bude nahradené novým poľom za každých okolností, tak aj tento kód je zbytočný a môžeš napísať priamo
Kód:
free( *platy );
*platy = NULL;
double* temp = malloc(...);
.
.//naplnim temp
.
*platy = temp;

Keďže *platy je vždy NULL, alebo platné pole, free vždy prejde ako validný príkaz (free(pole), alebo free(NULL)).

Poznámka: to free(temp) je trochu nebezpečná operácia. Ak by si temp inicializoval na NULL, tak je to vporiadku - príkaz free(NULL) je validný a nevykoná nič. Príkaz free(nejaký neinicializovaný pointer) je už trocha horší a výsledok je tzv. "undefined behaviour". Čiže nikto nevie, čo sa stane, môže ti kľudne umrieť pes, takže bacha na to!
To free(temp) som ale odstránil, takže preto len poznámka.

Na konci to
Kód:
*platy = (double *)malloc(*pocet * sizeof(double));
*platy = temp;

je totálna kravina. Na čo alokuješ pole, keď si ho vzápätí prepíšeš iným? Veď pole už máš alokované a ukazuje naň premenná temp. Takže to stačí prehodiť
Kód:
*platy = temp;


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 07.11.2016 12:56 | [C] pointer na pole vo vedlajsej funkcii

a este jedna vec. ja by som sa polu temp najradsej vyhol, no nedokazal som nijako napisat kod tak aby som mohol vo funkcii pracovat priamo s platy. neslo citanie, zapis, len nahradenie cez:
Kód:
*platy = temp;
takze ak by sa mi nejako podarilo sprevadzkovat pracu priamo s hlavnym polom bolo by to idealne. no netusim ako spravit pointer do funkcie na pole s tym ze bude normalne pouzitelne.

Citácia:
Premennej platy chýba inicializácia. Ak by si ju mal, nepotrebuješ tie hrozné booly s napohľad nič-nehovoriacim názvom.
boolom sa aj tak nevyhnem, su potrebne kvoli zadaniu ostatnych funkcii (ktore som sem pre skratenie nedaval). maju sa vykonat len ak boli najprv vykonane predchadzajuce 2 (funkcia V a N). inicializovat na null toaj tak budem musiet, kvoli free.

o tom spravani prikazu free pri neinicializovanych premennych som netusil.

Citácia:
Na čo alokuješ pole, keď si ho vzápätí prepíšeš iným? Veď pole už máš alokované a ukazuje naň premenná temp. Takže to stačí prehodiť
v ukazovateloch som uplne mimo, takze vdaka za opravu.


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 07.11.2016 14:43 | [C] pointer na pole vo vedlajsej funkcii

Ak chceš pracovať priamo s platy, stačí vždy použiť zápis (*platy) včetne zátvoriek. Tak sa dereferencia vždy vykoná správne.


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 07.11.2016 22:57 | [C] pointer na pole vo vedlajsej funkcii

super, diki. temp som dal uplne prec a konecne mi aj to pole funguje :)

este ma stve jedna vec ohladom celeho programu (nejedna sa len o tuto funkciu). textovy subor
Kód:
FILE *fr;
fr = fopen("zamestnanci2.txt", "r");
sa pouziva takmer vo vsetkych fuknkciach. ja som to vyriesil tak ze v kazdej sa otvori nanovo a pracuje sa s nim. chcel by som ho otvorit len v prvej funkcii a nasledne len odkazat smernikom (nech sa da pouzit premenna fr pre vsetky funkcie) a presunut sa nazaciatok namiesto zatvarania a znovuotvorenia.

mam to nejako takto, no akonahle sa skonci prva funkcia, premenna fr=NULL, co netusim preco sa deje:
Kód:
void vypis_V(FILE *fr, int *pocet)
{
   char c;
   fr = fopen("ZAMESTNANCI2.txt", "r");
   if (fr == NULL)
   {
      printf("Neotvoreny subor\n");
      return;
   }
...
}

void platmin_P(FILE *fr)
{
   if (fr == NULL)
   {
      printf("Neotvoreny subor\n");
      return;
   }
        rewind(fr);
...
}

void platarray_N(FILE *fr, double *platy)
{
   if (fr == NULL)
   {
      printf("Neotvoreny subor\n");
      return;
   }
   rewind(fr);
...
}

int main()
{
   ...
   FILE *fr;
   fr = NULL;
   while ((c = getchar()) != 'K')
   {
      switch (c)
      {
      case 'V':
         vypis_V(fr, &prikazV, &pocet, &pocetVP);
         break;
      case 'P':
         platmin_P(&prikazV);
         break;
      case 'N':
         platarray_N(&prikazV, &pocet, &platy);
         break;
      }
   }
   return 0;
}
errory to nehadze ziadne, len dalsie funkcie uz nejdu pretoze fr=NULL tak nemozu pokracovat.

Dalo by sa to nejako jednoducho vyriesit?


_________________
ITX >>> ATX
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3 | 3
NapísalOffline : 08.11.2016 7:48 | [C] pointer na pole vo vedlajsej funkcii

Vždy, keď chceš použiť out parameter (čiže parameter, ktorý chceš meniť vo funkcií a nechať zmenený aj vonku), musíš použiť referenciu na danú premennú.
Takže
Kód:
void vypis_V(FILE** fr)
{
  (*fr) = fopen("ZAMESTNANCI2.txt", "r");
  if( (*fr) == NULL ) {...}
}

FILE * fr = ...;
vypis_V( &fr );


_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 26.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
Napísal autor témyOffline : 14.11.2016 12:41 | [C] pointer na pole vo vedlajsej funkcii

uz ide vsetko ako ma, komplet program funguje podla predstav :) vdaka za pomoc


_________________
ITX >>> ATX
 [ Príspevkov: 26 ] 


[C] pointer na pole vo vedlajsej funkcii



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Pointer v C

v Backend

2

530

09.05.2011 10:05

the_pivo

V tomto fóre nie sú ďalšie neprečítané témy.

c++ zoskupenie funkcii

v Backend

6

474

26.11.2012 16:42

silentasflash

V tomto fóre nie sú ďalšie neprečítané témy.

C volanie funkcii

v Backend

12

1273

22.10.2011 15:43

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

dynamicka struktura, bool a pouzitie vo funkcii C++ otazka

v Backend

3

467

05.02.2016 12:57

Elendil

V tomto fóre nie sú ďalšie neprečítané témy.

C# pole matíc

v Backend

1

434

11.07.2010 11:37

dEVIANT

V tomto fóre nie sú ďalšie neprečítané témy.

C++ pole unikátnych hodnôt

v Backend

4

473

24.10.2014 13:42

marian_r

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicke pole v Triede C++

v Backend

1

2109

19.11.2008 14:51

Dark_Raven

V tomto fóre nie sú ďalšie neprečítané témy.

Dynamicky alokovane 2D pole C

v Backend

2

428

11.11.2013 13:32

Marcello123

V tomto fóre nie sú ďalšie neprečítané témy.

Jazyk C - Oddeleny preklad - pole struktur

v Backend

1

1540

28.05.2010 22:18

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Ako vytvoriť pole reťazcov v C++?

v Backend

1

1030

23.05.2011 12:58

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

2 rozmerne pole v C-cku

v Backend

4

1442

22.12.2010 21:33

the_pivo

V tomto fóre nie sú ďalšie neprečítané témy.

Internet vo vedlajsej budove

v Internet, služby a sociálne siete

4

377

11.10.2011 15:43

milosenko

V tomto fóre nie sú ďalšie neprečítané témy.

inteligent pointer

v Backend

4

558

25.10.2008 11:05

johny3212

V tomto fóre nie sú ďalšie neprečítané témy.

Delphi: Pointer, hodnota

v Ostatné

1

1252

22.12.2008 22:49

programator

V tomto fóre nie sú ďalšie neprečítané témy.

Pointer cursor aj mimo textu

v Frontend

2

416

21.04.2012 14:28

Bokos

V tomto fóre nie sú ďalšie neprečítané témy.

error C2109: subscript requires array or pointer type

v Backend

4

353

09.12.2012 15:36

BX



© 2005 - 2026 PCforum, edited by JanoF