Запись данных в файл в одну строку СИ

Привет) возникла проблема в том шо когда заполняет данные в файле все записывается в одну строку

bm2?????????2020????????opel?? ?????????434343

Как сделать чтобы новые данные записывались в файл с новой строки?

так

bm2?????????2020????????
opel???????????434343
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>

struct spisok         
{
  char name_avto[10];
  char got_avto[10];
} 
b;

void input (FILE*);

int main ()
{
char c;
FILE*avto;
while (1)
 {
  printf("\n___Information____\n");
  printf("\n 1 - New file");

  printf("\n\nSelect option: ");
  c=getch (); 
  switch (c)
  {
   case '1': input (avto); break;
   case '0': return 0;
   default: puts ("bad rejim");
  }
 }
 return 0;
} 
void input (FILE*avto)
{
 char ch;
 avto=fopen ("avto.txt","w");
 printf ("\n___Enter information about the machine___\n"); 
 do
  {
   printf ("\n> Name of machines: "); 
   scanf ("%s",&b.name_avto);
   printf ("> Year of the car: "); 
   scanf ("%s",&b.got_avto);
   fwrite (&b,sizeof (b),1,avto); 
   printf ("\nfinish? y/n");   
   printf ("\n");
   ch=getch ();
   } while (ch!='y');
 fclose (avto);
}

Ответы (1 шт):

Автор решения: DSuhoi

Функция fwrite() записывает информацию не в виде текста, а в блоках данных (Подробнее о fwrite() и fread() здесь). Для записи текстовой информации в файл используется fprintf():

//fwrite (&b,sizeof (b),1,avto);
   fprintf(avto,"%s %s\n", b.name_avto, b.got_avto);

(В функции scanf("%s",...); не нужно указывать ссылку на массив через &, т.к. имя самого массива b.name_avto уже является ссылкой на его первый элемент.)

→ Ссылка