Все нули в файле заменить единицами, а единицы нулями - C (СИ)

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

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

помогите переделать текст этой задачи с Паскаля на язык С

Ввести файл F . Все нули в файле заменить единицами, а единицы нулями. Файл вывести до и после преобразования Код Pascal
uses crt;
var f:file of byte;
    i,a:byte;
begin
randomize;
assign(f,'file');
rewrite(f);
for i:=1 to 20 do
 begin
  a:=random(5);
  write(f,a)
 end;
writeln('Содержание исходного файла');
seek(f,0);
for i:=0 to filesize(f)-1 do
 begin
  seek(f,i);
  read(f,a);
  write(a:3);
  if a in [0..1] then a:=1-a;
  seek(f,i);
  write(f,a);
 end;
writeln('');
writeln('Содержание измененного файла');
seek(f,0);
for i:=0 to filesize(f)-1 do
 begin
  read(f,a);
  write(a:3);
 end;
close(f);

Решение задачи: «Все нули в файле заменить единицами, а единицы нулями»

textual
Листинг программы
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
 
void main(void) {
FILE *f;
char i,a;
long int filesize;
 
 
srand(time(NULL));
 
f = fopen("C:\\file", "w+");
 
for (i = 1; i <= 20; i++){
    a = rand() % 6;//от нуля до 5
    fprintf(f, "%c", a);
};
fflush(f);
printf("Содержание исходного файла\n");
//мы находимся в конце файла, значит размер файла это его текущая позиция ftell
filesize = ftell(f);
 
fseek(f, 0, SEEK_SET);
for (i = 0; i <= filesize - 1; i++) {
 
    fseek(f, i, SEEK_SET);
    fscanf(f, "%c", &a);
    printf("%3i", a);
    if ((a == 0) || (a == 1)) a = 1 - a;
    fseek(f, i, SEEK_SET);
    fprintf(f, "%c", a);
};
 
printf("\n");
printf("Содержание измененного файла\n");
fseek(f, 0, SEEK_SET);
for (i = 0; i <= filesize - 1; i++) {
    fscanf(f, "%c", &a);
    printf("%3i", a);
};
fclose(f); 
};

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Объявляем переменные: FILE *f, char i, a, long int filesize
  3. Инициализируем генератор случайных чисел
  4. Открываем файл C:\\file в режиме записи и чтения
  5. Записываем в файл 20 символов, сгенерированных случайным образом от 0 до 5
  6. Перемещаем позицию файла в начало
  7. Читаем файл посимвольно и если символ равен 0 или 1, то меняем его на противоположный
  8. Закрываем файл

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

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