Инвертировать файл не используя дополнительные файлы - C (СИ)

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

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

По идее это так:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
int
main(void)
{
    int file = open("1.txt", 0666);
    char a, b;
    int i = 0;
    while (read(file, &a, 1) != 0) {
        printf("ololo");
        lseek(file, i*sizeof(int), SEEK_END);
        read(file, &b, 1);
        write(file, &a, 1);
        lseek(file, i*sizeof(int), SEEK_SET);
        write(file, &b, 1);
    }
        close(file);
    return 0;
}
но почему то всегда зацикливается. В чем ошибка? В определении "курсора" в файле?

Решение задачи: «Инвертировать файл не используя дополнительные файлы»

textual
Листинг программы
sizeFile = filelength(fileno(pFile));

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

  1. В первой строке кода определяется переменная sizeFile, которая содержит размер файла в байтах. Для этого используется функция filelength(), которая принимает в качестве аргумента файловый дескриптор fileno(pFile). Файловый дескриптор pFile открывает файл, с которым будет работать программа.
  2. Вторая строка кода не приведена, поэтому здесь нечего объяснять.
  3. В третьей строке кода также не приведена переменная pFile, поэтому здесь нечего объяснять.
  4. В четвертой строке кода не приведена функция fileno(), поэтому здесь нечего объяснять.
  5. В пятой строке кода не приведена функция close(), поэтому здесь нечего объяснять.

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


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

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

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