Запись данных в файл в одну строку СИ
Привет) возникла проблема в том шо когда заполняет данные в файле все записывается в одну строку
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 уже является ссылкой на его первый элемент.)