[C] - fgets načítava hlúposti

Programovacie jazyky, rady, poradňa...
fraqer
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 21 apr 2012, 15:47
Bydlisko: NM

[C] - fgets načítava hlúposti

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

Zdravím, mám taký problém. Snažím sa urobiť takú lotériu kde do .txt súboru bude zapisovať zostávajúce peniaze. Ale keď zapíšem do súboru hodnotu napr. 100 a dám ju načítať do reťazca pomocou fgets tak mi doňho nenačíta 100 ale toto: $@
a všetko čo bolo v súbore vymaže. Už som prehľadal všetko možné ale na nič podobné som nenatrafil. Ďakujem za odpoveď

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define MAX 5

int main()
{
 while(1) {
 int vc[MAX], loto[MAX];
 char banka[8];
 int i, j, k = 0, n, c, a;
 FILE *fw, *fr;
 
  srand(time(0));
  
  if (fw = fopen("loteria.txt", "w") == NULL) {
  	printf("Subor sa nepodarilo otvorit\n");
  	return 1;
  }
  
  if (fr = fopen("loteria.txt", "r") == NULL) {
  	printf("Subor sa nepodarilo otvorit\n");
  	return 1;
  }
  
  
  fgets(banka, 7, fr); 
  printf("%s", banka);
  
  
  printf("Aku sumu chces stavit?\n");
  scanf("%d", &n);

  printf("Zadaj 5 cisel od 1 do 9: ");
  for( i = 0; i < 5; i++)
   scanf("%d", &vc[i]);
  
  printf("Vyherne cisla su: ");
  for( i = 0; i < 5; i++)
   {
    loto[i] = rand()%8 + 1;
    printf("%d\n", loto[i]);
   }
  
  for( i = 0; i < 5; i++) 
   if( loto[i] == vc[i]) {
   k += 1;
   }
  printf("%d\n", k);
  
  
  system("pause");
  }
  return 0; 	
}
Prílohy
Toto zobrazí
Toto zobrazí
Snímka obrazovky (7).png (1.91 KiB) 772 zobrazení
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: [C] - fgets načítava hlúposti

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

1. preco otvaras ten isty subor najprv na zapis a potom na citanie cez 2 handly? popravde osobne sa dost divim ze ti funguje vobec to (ale fair enough)

2. vies si urobit krokovanie, debug nejaky? pozriet co ti tam lietaju za hodnoty v premennych?

edit: samozrejme nedoslo mi ze si si to otvoril ako "w" nie "a", jasne ze si vymazes obsah suboru este predtym nez si ho precitas.
fraqer
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 21 apr 2012, 15:47
Bydlisko: NM

Re: [C] - fgets načítava hlúposti

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

No tak som skúsil vymeniť "w" za "a" obsah súboru už nevymaže ale stále ukazuje to isté. A ten debug by som možno zvládol.
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: [C] - fgets načítava hlúposti

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

1. "a" nie je to co potrebujes na tvoj ucel, ty potrebujes hlavne neotvarat subor na zapis na zaciatku programu. funguj takto

-otvorim subor na citanie
-nacitam data
-zavriem subor.

-spracujem data

-otvorim subor na zapis
-zapisem data
-zavriem subor.

2. pozri si ake hodnoty mas nacitane v jednotlivych polozkach pola banka.

3. pomenuvaj premenne nejak logickejsie, kto sa v tom i,jk... ma vyznat :)
fraqer
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 21 apr 2012, 15:47
Bydlisko: NM

Re: [C] - fgets načítava hlúposti

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

No tak som sa potrápil a ukazuje toto. Nad tým je aj keď to nie je rozdelené. Ďakujem za rady :)
Prílohy
decimal.png
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: [C] - fgets načítava hlúposti

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

Pošli upravený kód
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8217
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: [C] - fgets načítava hlúposti

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

nechaj si hned po nacitani vypisat banku.
fraqer
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 21 apr 2012, 15:47
Bydlisko: NM

Re: [C] - fgets načítava hlúposti

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

Dobre už som prišiel na problém. V tomto príkaze som zabudol dať 2 zátvorky za if a za "r". :roll: Takto to už ide. Ďakujem za pomoc.

Kód: Vybrať všetko

if ((fr = fopen("loteria.txt", "r")) == NULL) {
  	printf("Subor sa nepodarilo otvorit\n");
  	system("pause");
  	return 1;
  }
Spixy
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1334
Registrovaný: 24 okt 2010, 12:52

Re: [C] - fgets načítava hlúposti

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

jj, toto sa mi už tiež podarilo :-D
ťažko sa táto chyba opravuje a čuduješ sa či sa gcc náhodou nezbláznil
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8217
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: [C] - fgets načítava hlúposti

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

fraqer napísal:Dobre už som prišiel na problém. V tomto príkaze som zabudol dať 2 zátvorky za if a za "r". :roll: Takto to už ide. Ďakujem za pomoc.

Kód: Vybrať všetko

if ((fr = fopen("loteria.txt", "r")) == NULL) {
  	printf("Subor sa nepodarilo otvorit\n");
  	system("pause");
  	return 1;
  }
:D treba si zapnut warningy
fraqer
Expert
Expert
Používateľov profilový obrázok
Príspevky: 182
Registrovaný: 21 apr 2012, 15:47
Bydlisko: NM

Re: [C] - fgets načítava hlúposti

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

Aspoň som sa niečo nové naučil. :oops: Ak by niekoho zaujímalo toto je hotový produkt. :)
Prílohy
Loteria.rar
(8.49 KiB) 75 stiahnutí
Napísať odpoveď