こんにちは私はstruct
ベースのプロジェクトに取り組んでいます。構造体の最初のアドレスの保存に問題があります。私の N 関数に問題はなく、正常に動作します。私の問題は、私の V 関数では、最後の構造リストのみを出力することです。最後の情報だけでなく、構造体からすべての情報を出力したい。私は自分自身を理解できたと思います
コード:
typedef struct stuff {
char signatura[12];
char isbn[15];
char kniha[100];
char autori[100];
int datum;
int preukaz;
struct stuff *p_dalsi;
} STUFF;
STUFF *alokuj(void){
STUFF *p_pom;
p_pom=(STUFF *) malloc (sizeof(STUFF));
return p_pom;
}
void nacitaj(STUFF *p_akt){
FILE *fr;
int pocet_zaznam=0, pocet_enter=0, i;
char c, s[100];
if ((fr = fopen("KNIZNICA.TXT","r")) == NULL){
printf("Zaznamy neboli nacitane\n");
}
while((c=getc(fr))!= EOF) {
if(c=='\n') pocet_enter++;
}
pocet_zaznam=(pocet_enter+1)/7;jeden zaznam ma 7 casti
rewind(fr);i
for (i=1;i<=pocet_zaznam;i++){
fgets(s,100,fr); //vynechanie prveho riadku v subore
fgets(p_akt->signatura,12,fr);
fgets(p_akt->isbn,15,fr);
fgets(p_akt->kniha,100,fr);
fgets(p_akt->autori,100,fr);
fscanf(fr,"%d\n",&p_akt->datum);
fscanf(fr,"%d\n",&p_akt->preukaz);
p_akt->p_dalsi=NULL;
}
printf("Nacitalo sa %d zaznamov\n",pocet_zaznam);
fclose(fr);
}
void vypis(STUFF *p_akt) {
int zaznam_poradie=1;
while(p_akt!=NULL) {
printf("%d.\n",zaznam_poradie);
printf("signatura: %s",p_akt->signatura);
printf("isbn: %s",p_akt->isbn);
printf("kniha: %s",p_akt->kniha);
printf("autori: %s",p_akt->autori);
printf("datum: %d\n",p_akt->datum);
printf("datum: %d\n",p_akt->preukaz);
zaznam_poradie++;
p_akt=p_akt->p_dalsi;
}
}
int main() {
char c;
STUFF *p_prv = NULL;
STUFF *p_akt = NULL;
p_akt = p_prv;
p_prv = (STUFF *)malloc(sizeof(STUFF));
while(c!='K') {
c = getchar();
if(c=='N') {
p_akt = p_prv;
nacitaj(p_akt);
}
if(c=='V') {
p_akt = p_prv;
vypis(p_akt);
}
if(c=='P');
if(c=='Z');
if(c=='H');
if(c=='A');
}
return 0;
}