Kezdőoldal » Számítástechnika » Programozás » Ezt a programot írtam. Fáljba...

Ezt a programot írtam. Fáljba szeretnék írni, de mindig csak a stringeket írja bele, a számokat nem, mi a baj a kóddal?

Figyelt kérdés

#include <stdio.h>


typedef struct

{

char nev[30];

int pont,helyezes;

}

ADAT;

ADAT adat;


FILE* fp;


int main()

{

int n,i;

fp=fopen("adatok.txt","w");

do

fp=fopen("adatok.txt","w+");

while(fp==NULL);

printf("Adja meg a versenyzok szamat!");

scanf("%d",&n);

for (i=0;i<n;i++)

{

scanf("%s",adat.nev);

printf("Adja meg a versenyzo pontszamat!");

scanf("%d",&adat.pont);

printf("Adja meg a versenyzo helyezeset!");

scanf("%d",&adat.helyezes);

printf("\n");

fwrite(&adat,sizeof(adat),1,fp);

}

fclose(fp);

}



2015. márc. 14. 15:17
 1/3 anonim ***** válasza:

Kiírja az, csak ha megnyitod notepaddel, akkor a számokat nem úgy látod, ahogy várod.

Olvasd vissza az adatokat és meglátod, hogy ott vannak.

2015. márc. 14. 16:26
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
Binárisan teszi a fájlba hexaeditorral megnézheted. Szerintem te szövegesen várod.
2015. márc. 14. 16:29
Hasznos számodra ez a válasz?
 3/3 teelapo ***** válasza:

Az "adat" változó első 30 byte-ja a név karakteresen, a következő 2 vagy 4 byte (rendszerenként különböző, hogy az "int" típusú szám hány bájtot foglal, de manapság általában 4 bájt) a pont, a következő 4 byte a helyezés SZÁMKÉNT. Vagyis ha a helyezés pl a harmadik, akkor a 35..38 byteok tartalma hexadecimális 00 00 00 03. Mikor ezt kiírja az fwrite(), akkor byte-ról byte-ra írja ki. Amikor a végeredményt kilistázod, akkor a 00 00 00 03-t négy ASCII karakterként (4 betűként) értelmezi, de a 00-s és 03-as ASCII kód nem érvényes betű, ezért nem ír semmit.


Ha pl a helyezésnek beírnád a 10538-at, az hexadecimálisan 00 00 41 42 lenne, és kiírásál a két kiírhatalan "0 byte betű" után jön egy hexa 41 (decimális 65), ami a "A" betű ASCII kódja, aztán a hexa 42 ami a "B" betűt jelenti. Vagyis a "10538" helyett a "AB" lesz kiírva.

Van egy printf() vagy sprintf() függvény a C-ben, amit használnod kellene. Ez számból szöveget csinál.

2015. márc. 17. 23:33
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!