C - заменить строку в файле с помощью указателя char

-6

Я понимаю, что есть тонны ответов об этом, но я не нашел ответа, который мне нравится.

Я хочу изменить параметр IPADDR в файле linux ifcfg-eth0, чтобы изменить IP-адрес.

У меня есть код, который находит строку, начинающуюся с "IPADDR", и у меня есть указатель на начало строки.

Я не уверен, как отредактировать эту строку в файле.

Вот код:

FILE *fp;
char *line=NULL;
size_t len=0;
ssize_t read;
char subword[7];

// path to file
const char filename[]="/etc/sysconfig/..."

fp=fopen(filename, "w");

while((read = getline(&line, &len, fp)) != -1) {
memcpy(subword, &line[0], 6);
subword[6]='\0';
if(strcnp("IPADDR", subword) == 0)
{
// here I have a pointer to the line (variable "line") I want to replace
// the line looks like this "IPADDR=xxx.xxx.xxx.xxx"
// what to do here??? how to replace the ip??

}
}

Thnaks!

спросил(а) 2021-01-19T17:53:47+03:00 6 месяцев назад
1
Решение
90

Файлы не действуют как буферы текстового редактора. Вы не можете ожидать выполнения операций редактирования (замены строки, редактирования строки) на файлы.

Единственное исключение - если ваша новая строка имеет точно такую же длину, как и старая, то вы можете работать в двоичном режиме в файле и записывать только правильное количество байтов.

В общем, вы не можете, и правильный способ - загрузить все это в память, отредактировать там, а затем записать все, чтобы эффективно перезаписать старый файл с новым желаемым содержимым.

ответил(а) 2021-01-19T17:53:47+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема