A
Avanbars
Структура имеет вид: фамилия, номер телефона, дата рождения. Внести в начало списка информацию о четырех новых знакомых.
как с помощью функции void app добавить данные не в конец списка, а в начало списка?
C++:
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct spisok
{
char familiya[10];
char nomer[10];
char data[10];
} a;
void input (FILE*);
void print (FILE*);
void app (FILE*);
int main ()
{
char b;
FILE*c;
while (1)
{
puts ("1-new file");
puts ("2-view file");
puts ("3-add from file");
puts ("0-exit");
b=getch ();
switch (b)
{
case '1': input (c); break;
case '2': print (c); break;
case '3': app (c); break;
case '0': return 0;
default: puts ("bad rejim");
}
}
return 0;
}
void input (FILE*c)
{
char ch;
c=fopen ("telbaza.dat","wb");
printf ("\nEnter the information on the acquaintance\n");
do
{
printf ("\nfamiliya:"); scanf ("%s",&a.familiya);
printf ("nomer telefona:"); scanf ("%s",&a.nomer);
printf ("date of birth:"); scanf ("%s",&a.data);
fwrite (&a,sizeof (a),1,c);
printf ("\nfinish? y/n");
ch=getch ();
} while (ch!='y');
fclose (c);
}
//-------------------
void print (FILE*c)
{
int i;
c=fopen ("telbaza.dat","rb");
i=1;
fread (&a,sizeof (a),1,c);
while (!feof (c))
{
printf ("\n%s\nnomer telefona: %s\ndate of birth: %s",a.familiya,a.nomer,a.data);
fread (&a,sizeof (a),1,c);
i++;
}
getch ();
}
//------------
void app (FILE*c)
{
char ch;
int i,k;
spisok mas[10],tmp;
c=fopen ("telbaza.dat","rb+");
k = 0;
while(!feof(c))
fread(&mas[k++],sizeof(a),1,c);
rewind (c);
printf ("\nTo add the information\n");
do
{
printf ("\nfamiliya:"); scanf ("%s", &tmp.familiya);
printf ("nomer telefona:"); scanf ("%s",&tmp.nomer);
printf ("date of birth:"); scanf ("%s", &tmp.data);
fwrite (&tmp,sizeof (tmp),1,c);
printf ("\nfinish? y/n");
ch=getch ();
} while (ch!='y');
for(i=0;i<k;i++)
fwrite(&mas[i],sizeof(a),1,c);
fclose(c);
}
как с помощью функции void app добавить данные не в конец списка, а в начало списка?