Вы читаете только 40 байтов.Если вы увеличите LEN, вы можете прочитать оставшуюся строку,
. Или вместо чтения по количеству байтов вы можете прочитать всю строку, пока не появится новая строка
#include <string.h>
#define RECORDS 30
#define LEN 20
main()
{
FILE *fptr;
fptr = fopen("b.db", "r");
int i;
int counter = 4;
for (i = 0; i < counter; i++)
{
char temp1[LEN];
fscanf(fptr, "%[^\n]%*c", temp1);
printf("%s\n", temp1);
}
fclose(fptr);
}
Если вызаинтересованы в чтении имени и его соответствующей записи, в то же время вы можете настроить что-то вроде,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define RECORDS 30
#define LEN 20
main()
{
FILE *fptr;
fptr = fopen("b.db", "r");
int i;
int counter = 2;
for (i = 0; i < counter; i++)
{
char temp1[LEN];
char temp2[RECORDS];
fscanf(fptr, "%[^\n]%*c%[^\n]%*c", temp1, temp2);
printf("%s ---- %s\n", temp1, temp2);
}
fclose(fptr);
}