Diskuze: Praca so strukturou a suborom v jazyku C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Diskuze: Praca so strukturou a suborom v jazyku C – C / C++ – Fórum – Programujte.comDiskuze: Praca so strukturou a suborom v jazyku C – C / C++ – Fórum – Programujte.com

 

Jozef
~ Anonymní uživatel
61 příspěvků
18. 3. 2021   #1
-
0
-

Caute, snazim sa napisat kod v jazyku C, ktory bude citat zo suboru (v subore je ulozene meno a za nim vek na jednom riadku a potom pokracuju riadky v tomto style) meno a vek osoby a ulozi to do statickeho pola struktur. Problem mam stym, ze ak chcem vypisat, neskor nejaku osobu zo struktury tak mi vypisse len poslednu a to len na 0 indexe. K ostatnym neviem pristupit. Viete mi poradit, kde robim chybu ?

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define MAX 81
#define COUNT 1000

typedef struct {
  char name[MAX];
  int old;
} PERSON;


int main(void){


  FILE *fr;
  PERSON array[COUNT];
  char file[MAX];
  int i;

  printf("Enter the name file\n");
  scanf(" %[^\n]s", file);

  if ((fr = fopen(file, "r")) == NULL){
    printf("Couldn't the open  %s file\n", file);
    exit(1);
  }


  int o, t, j = 0;
  int lok = 0;

  for (o = 0; o < COUNT; o++){
  while (fscanf(fr, "%s %d", array[o].name, &array[o].old) != EOF){
  printf("%s %d\n", array[o].name, array[o].old);
    j++;
    }
  }

  printf("Printout the first person and age: %s %d\n", array[0].name, array[0].old);
/*
  for (t = 0; t < j; t++){
  lok += pole[o].stari;
  }
*/
/*
  printf("Pocet precitanych cisel bol: %d\n", j);
  printf("Sucet precitanych cisel bol: %d\n", lok);
 */

  if ((fclose(fr)) == EOF){
    printf("Couldn't the close file\n");
  }


  return 0;
}
Nahlásit jako SPAM
IP: 95.105.239.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 3. 2021   #2
-
0
-

V každé iteraci toho foru čteš soubor až do konce.

Takže v první iteraci se načte celý soubor na index 0 a další nenačtou nic.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
23. 3. 2021   #3
-
0
-

#1 Jozef
tak jak to máš dělané to nefunguje, pole z textového souboru musíš číst po řádkách a až následně řádku převést do pole.

Jsou různé způsoby ukládání a načítání, jiná situace by byla pokud bys měl data uložená binárně z pole stejné struktury, pak lze z velikosti souboru určit počet záznamů, rezervovat v paměti místo pro pole a načíst soubor binárně.

Nahlásit jako SPAM
IP: 185.112.167.–
KIIV
~ Moderátor
+43
God of flame
9. 4. 2021   #4
-
0
-

Najednou clovek oceni krasy protobufu..

Nahlásit jako SPAM
IP: 37.48.26.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 29 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý