Функция fopen в режиме "w+" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Если я правильно понимаю,файл f1 должен быть открыт и для записи и для чтения.Но в этом коде только записывает,но не читает(файл f2 остается пустым).Что не так?
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char a[80], str[] = "dfg457sdfgkjhg8976";
    FILE *f1, *f2;
    f1 = fopen("file1.txt","w+");
    f2 = fopen("file2.txt","w");
    fprintf(f1, "%s", str);
    while(NULL != fgets(a, 80, f1))
        fprintf(f2, "%s", a);
    fclose(f1);
    fclose(f2);
    return 0;
}
Если же f1 после записи закрыть а потом вновь открыть на чтение(в режиме r),то работает код нормально:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char a[80], str[] = "dfg457sdfgkjhg8976";
    FILE *f1, *f2;
    f1 = fopen("file1.txt","w+");
    f2 = fopen("file2.txt","w");
    fprintf(f1, "%s", str);
    fclose(f1);
    f1 = fopen("file1.txt","r");
    while(NULL != fgets(a, 80, f1))
        fprintf(f2, "%s", a);
    fclose(f1);
    fclose(f2);
    return 0;
}
Но хотелось бы писать более лаконично,поэтому тестирую режим w+

Решение задачи: «Функция fopen в режиме "w+"»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char a[80], str[] = "dfg457sdfgkjhg8976";
    FILE *f1;
    fpos_t position;
    f1 = fopen("E:\\file1.txt","w+");
    fgetpos(f1,&position);
    fprintf(f1, "%s", str);
    fsetpos(f1,&position);
    while(NULL != fgets(a, 80, f1))
        printf("%s\n",a);
    fclose(f1);
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы