Основная проблема заключается в том, как вы открываете файлы:
if (f=fopen("fis.txt","w+")==NULL) {
Оператор равенства ==
имеет более высокий приоритет, чем оператор присваивания =
.Итак, сначала результат fopen
сравнивается с NULL, а затем результат этого сравнения, то есть 0 или 1, присваивается f
.Таким образом, f
не указывает на правильное местоположение, и именно поэтому ваши fprintf
вызовы терпят неудачу.Если у вас есть предупреждения на вашем компиляторе, он должен был предупредить о назначении целого числа указателю.
Добавьте круглые скобки, чтобы получить правильный порядок:
if ((f=fopen("fis.txt","w+"))==NULL) {
И:
if ((b=fopen("binar.txt","w+b"))==NULL) {
Кроме того, ваше условие цикла неверно:
for (int i=0;i<=n;i++) {
Массив v
имеет n
элементов, то есть его индексы идут от 0
до n-1
, но вы выполняете циклот 0
до n
.Измените условие цикла, чтобы учесть это:
for (int i=0;i<n;i++) {
Вам также нужно вызвать rewind
для каждого файлового дескриптора, прежде чем читать их обратно, чтобы вы могли прочитать то, что только что написали:
rewind(f);
fgets(s,sizeof(s),f);
puts(s);
printf("\n");
rewind(b);
fgets(s,sizeof(s),b);
puts(s);
printf("\n");