Функция fopen в режиме "w+" - C (СИ)
Формулировка задачи:
Если я правильно понимаю,файл f1 должен быть открыт и для записи и для чтения.Но в этом коде только записывает,но не читает(файл f2 остается пустым).Что не так?
Если же f1 после записи закрыть а потом вновь открыть на чтение(в режиме r),то работает код нормально:
Но хотелось бы писать более лаконично,поэтому тестирую режим w+
#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;
}#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;
}Решение задачи: «Функция 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;
}