C++ Load Yapma
-
Hocam binary formatta yazmayı öğren dosyaya :)
-
bilmece bunu yazdı:
-----------------------------
hocam yazarken örnek
fwrite(studentName,1,sizeof(studentName),Dosya)
fwrite(studentSubjects1,1,sizeof(studentSubjects1),Dosya)
okurken de aynı yaparsan sorun olmaz sanıyorum
fread(studentName,1,sizeof(studentName),Dosya)
-----------------------------studentName degiskeni burda bir gosterici dizisidir ve sizeof(studentName) isleci sonucu muhtemelen 40 gibi bi sonuc cikicaktir.(32bit sistemde calisildigini farz edersek) Bu degerin ogrenci isimlerinin uzunluguyla baglantisi olmadigindan ve bu sekilde dosyaya yazdigin bilgilerin string siniflarinin bellekteki adresleri oldugundan bu kod dogru sekilde calismaz.
dosyaya veriyi yazarken;
isimA$14 14 14 14 14 C
isimB$21 21 21 21 21 B
seklinde yazarsan ve okurken de fgets ile bilgiyi satir satir okuyup, sscanf ile de veriyi ayirirsan bu is oldu demektir. (sscanf ile programin acilisi sirasinda gerekli degiskenlere degerlerini yuklersin.)ancak sunu soyliyim, dizileri ayri ayri olusturucagina, bilgiyi bir yapida saklayip onun dizisini olustursan daha mantikli oolur.
typedef struct tagSTUDENT { string strName; int ppsubjects[5]; double dAvg; string strMark; } STUDENT, *PSTUDENT; STUDENT g_Students[10]; int main(int argc, char **argv) { }yukaridaki yapi ile de seninn ayri ayri yaptigin isin aynini yapabilirsin. Hemde bu sekilde daha az karmasik olur ;-)
-
farketmemişim onu studentName[10][30] 10 öğrenci 30 isim uzunluğu böylede yapılırsa sorun olmaz.
-
şunu yazdim bir dene sanirim cozum olur.
FILE *fp;
char *s;
fp=fopen(fp,"c:\\dosyadi.txt");
while(!feof(fp))
{
fscanf(fp,"%s",s);
printf("%s",s);
}
-
verileri ikli donguye sokarak direk dosyadan aldım tek tek sayısal verileri de
inetger a cevirerek olayı hallettim yardımlarınız için teşekkürler
