Это мой код:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_LENG 100
#define PAGE_LENG 30
typedef struct pDB {
char model[MAX_LENG];
char ram[MAX_LENG];
char memSpace[MAX_LENG];
char screenSize[MAX_LENG];
char price[MAX_LENG];
}phonedb;
struct nod {
phonedb phone;
struct nod* next;
};
typedef struct nod node;
node* root, * prev, * cur;
node *newNode(phonedb p)
{
node* new = malloc(sizeof(node));
new->phone = p;
new->next = NULL;
return new;
}
void insertAfterCur(phonedb p)
{
FILE* fptr;
fptr = fopen("phonedb.dat", "rb");
while (fread(&p, sizeof(phonedb), 1, fptr))
{
if (root == NULL)
{
root = newNode(p);
cur = root;
}
else
{
cur->next = newNode(p);
cur = cur->next;
}
}
fclose(fptr);
}
int main()
{
phonedb p;
int inp;
FILE* fptr;
FILE* fptr2;
while (1)
{
printf("2. Create a list from dat\n");
printf("3. Print all database\n");
printf("4. Quit\n");
scanf("%d", &inp);
switch (inp)
{
case(2):
insertAfterCur(p);
break;
case(3):
for (cur = root; cur != NULL; cur = cur->next)
{
printf("%s %s %s %s %s\n", cur->phone.model, cur->phone.ram, cur->phone.memSpace, cur->phone.screenSize, cur->phone.price);
}
break;
case(4):
exit(1);
}
}
}
он выводит только 1 строку информации, а остальные - '\ n', цена указывается как странные символы. Моя структура phonedb имеет модель, ram, memspace, размеры экрана и цену, которые являются строками, а структура узла содержит тип phonedb и указатель.