Скопировать содержимое текстового файла, удалив в каждой строке слово номер N - C (СИ)
Формулировка задачи:
Обработку символьной строки оформить в виде функции. Сканирование строки и доступ к её элементам выполнить ТОЛЬКО с использованием команд адресной арифметики(работа с указателями). Это так же значит, что ЗАПРЕЩЕНО статически объявлять любые строковые переменные!
Скопировать содержимое текстового файла, удалив в каждой строке слово номер N. Я не могу понять,то что написано жирным шрифтом Не могли бы вы привести мне конкретный пример? Спасибо!Решение задачи: «Скопировать содержимое текстового файла, удалив в каждой строке слово номер N»
#include <stdio.h>
#include <stdlib.h>
#define MAX_CHARS_IN_LINE 2048
void fff(char* txt) {
/*..... как-то надо здесь запомнить в указатель начало слова номер N........*/
/*........ потом так-же конец слова
, потом возможно memmove какое-нибудь...... */
}
int main(int argc, char *argv[])
{
FILE *fp;
char* str;
str = (char*) malloc(MAX_CHARS_IN_LINE);
if((fp=fopen(argv[1], "r"))==NULL) {
printf("Не удается открыть файл.\n");
exit(1);
}
while(!feof(fp)) {
if(fgets(str, MAX_CHARS_IN_LINE, fp)) fff(str); //printf("%s", str);
}
fclose(fp);
free (str);
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция fff, которая принимает строку в качестве аргумента и удаляет из неё слово, отмеченное номером N. Однако, точное удаление слова обосновано не было, и код для этого не был написан.
Код в функции main открывает указанный в командной строке файл для чтения, затем читает его построчно с помощью функции fgets. Каждую прочитанную строку передают в функцию fff для обработки. После завершения чтения файла, он закрывается, а выделенная для работы с ним память освобождается.
Обратите внимание, что в этом коде не реализован механизм определения, содержит ли строка слово, которое должно быть удалено. Также не было реализовано само удаление этого слова.