Решенные. Спасибо lutogniew ..... чуть более усложняю ...C: Системные вызовы и указатели для изменения файла
Так что у меня проблемы с домашним заданием. Назначение заключается в том, чтобы взять файл (используя только системные вызовы), отменить его и записать выходной файл с этими данными с обратной записью (только для ASCII). Уловка заключается в том, что обратная секция должна выполняться с помощью указателей. Я сделал следующее ниже, что действительно работает. Тем не менее, он не использует указатели для изменения.
Мой вопрос, я думаю, как я могу получить доступ к чему-то вроде данных [] с помощью указателей? Или, как я могу прочитать из файла в него. Все, что я пробовал (в основном char **), читает только нулевой.
Любая помощь будет высоко оценена.
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int main(void)
{
int i = 0;
int fileOut = open("output.txt", O_WRONLY | O_APPEND);
int fileIn = open("input.txt", O_RDONLY);
int start = lseek(fileIn, 0 , SEEK_CUR);
int end = lseek(fileIn, 0 , SEEK_END);
int restart = lseek(fileIn, 0-end , SEEK_CUR);
char data[end];
char reverseData[end];
read(fileIn, data, end);
for(i = 0; i< end; i++){
reverseData[i] = data[end-(i+1)];
}
write(fileOut, reverseData, end);
return 0;
}
Подсказка: данные о символах [конец], * p = данные; Надеюсь, никто здесь не выполнит ваше задание для вас. – bvj
'char reverseData [end];' Лучше надеюсь, что ваш файл не будет больше предела стека вашего процесса. –
Не читайте весь файл в памяти сразу - прочитайте его в кусках. И не используйте lseek для определения размера файла - используйте 'stat' и разбирайтесь с трубой разумно (например, выпустите сообщение об ошибке и прервите) –