您好,我正在做一个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;
}