uglavnom, ovdje su tri programa, prvi bi trebao prepisati sadržaj txt datoteke u .bin, drugi bi sadržaj .bin datoteke trebao sortirati, a treći bi sadržaj .bin datoteke trebao ispisati na zaslon.
drugi program bi trebao biti skroz točan jer ga je napisao profesor, ova druga dva programa su moj uradak, kada pokrenem prvi javi mi segmentation fault (core dumped), ali ipak napravi .bin datoteku, drugi program se pokrene bez poteškoća, a treći mi na zaslon ispiše smeće (samo hrpu nula)
#include<stdio.h>
main()
{
typedef struct {
int id_broj;
char naziv[32];
char oznaka;
double vrijednost;
} zapis;
FILE *u, *i;
int n;
zapis *z=malloc(sizeof(zapis));
u=fopen("zapis.txt","r"); if(!u) return;
i=fopen("zapisi.bin","wb");
/*
for (n=0;n<4;n++) {
fscanf(u, "%d %s %c %lf", z->id_broj, z->naziv, z->oznaka, z->vrijednost);
fwrite(z, sizeof(zapis), 1, i);
} */
while (fscanf(u, "%d %s %c %lf", z->id_broj, z->naziv, z->oznaka, z->vrijednost)==4)
fwrite(z, sizeof(zapis), 1, i);
fclose(u);
fclose(i);
}
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id_broj;
char naziv[32];
char oznaka;
double vrijednost;
} zapis;
int cmp_silazno_naziv( zapis* a, zapis* b )
{
return -strcmp( a->naziv, b->naziv );
}
main()
{
FILE* f = fopen( "zapisi.bin", "r+b" ); if( !f )exit(1);
fseek( f, 0, SEEK_END );
long size = ftell( f );
long N = size / sizeof( zapis ); if( N * sizeof( zapis ) != size )exit(1);
fseek( f, 0, SEEK_SET );
zapis *z = malloc( size );
fread( z, sizeof(zapis), N, f );
qsort( z, N, sizeof(zapis),(int(*)(const void*,const void*))cmp_silazno_naziv );
fseek( f, 0, SEEK_SET );
fwrite( z, sizeof(zapis), N, f );
free(z);
fclose(f);
return 0;
}
#include <stdio.h>
#include <string.h>
main()
{
FILE *b;
typedef struct {
int id_broj;
char naziv[32];
char oznaka;
double vrijednost;
} zapis;
int N;
b=fopen("zapisi.bin", "r");
zapis *p=malloc(sizeof(zapis));
/* for (N=0;N<4;N++){
fread(p,sizeof(zapis),1,b);
printf("%d %s %c %lf\n", p->id_broj,p->naziv,p->oznaka,p->vrijednost);
} */
while (fread(p,sizeof(zapis),1, b)==1)
printf("%d %s %c %lf\n", p->id_broj,p->naziv,p->oznaka,p->vrijednost);
fclose (b);
}
tek sam počeo raditi ovo gradivo i nije mi baš najjasnije, a nemam nikakvih materijala iz kojih bi mogao naučiti pa sve otkrivam metodom pogrešaka i pokušaja, volio bih znati zašto ovo ne radi i što radim krivo u tome i ako netko ima kakvu dobru skriptu ili nešto iz koje bi mogao više doznati bio bi zahvalan?
