Изменить строку в файле c

Обновлено: 05.07.2024

Строка -- это последовательность ASCII или UNICODE символов.

Строки в C, как и в большинстве языков программирования высокого уровня рассматриваются как отдельный тип, входящий в систему базовых типов языка. Так как язык C по своему происхождению является языком системного программирования, то строковый тип данных в C как таковой отсутствует, а в качестве строк в С используются обычные массивы символов.

Исторически сложилось два представления формата строк:

  1. формат ANSI;
  2. cтроки с завершающим нулем (используется в C).

Формат ANSI устанавливает, что значением первой позиции в строке является ее длина, а затем следуют сами символы строки. Например, представление строки "Моя строка!" будет следующим:

11 'М' 'о' 'я' ' ' 'с' 'т' 'р' 'о' 'к' 'а' '!'
В строках с завершающим нулем, значащие символы строки указываются с первой позиции, а признаком завершения строки является значение ноль. Представление рассмотренной ранее строки в этом формате имеет вид:

'М' 'о' 'я' ' ' 'с' 'т' 'р' 'о' 'к' 'а' '!' 0

Объявление строк в C

Строки реализуются посредством массивов символов. Поэтому объявление ASCII строки имеет следующий синтаксис:

char имя[длина];
Объявление строки в С имеет тот же синтаксис, что и объявление одномерного символьного массива. Длина строки должна представлять собой целочисленное значение (в стандарте C89 – константа, в стандарте C99 может быть выражением). Длина строки указывается с учетом одного символа на хранение завершающего нуля, поэтому максимальное количество значащих символов в строке на единицу меньше ее длины. Например, строка может содержать максимально двадцать символов, если объявлена следующим образом:
char str[21]; Инициализация строки в С осуществляется при ее объявлении, используя следующий синтаксис:
char str[длина] = строковый литерал;

Строковый литерал – строка ASCII символов заключенных в двойные кавычки. Примеры объявления строк с инициализацией:

char str1[20] = "Введите значение: ", str2[20] = "";

Работа со строками в С

Так как строки на языке С являются массивами символов, то к любому символу строки можно обратиться по его индексу. Для этого используется синтаксис обращения к элементу массива, поэтому первый символ в строке имеет индекс ноль. Например, в следующем фрагменте программы в строке str осуществляется замена всех символов 'a' на символы 'A' и наоборот.

for(int i = 0; str[i] != 0; i++)
if (str[i] == 'a') str[i] = 'A';
else if (str[i] == 'A') str[i] = 'a';
>

Массивы строк в С

Объявление массивов строк в языке С также возможно. Для этого используются двумерные массивы символов, что имеет следующий синтаксис:
char имя[количество][длина];

Первым размером матрицы указывается количество строк в массиве, а вторым – максимальная (с учетом завершающего нуля) длина каждой строки. Например, объявление массива из пяти строк максимальной длиной 30 значащих символов будет иметь вид:

При объявлении массивов строк можно производить инициализацию:
char имя[количество][длина] = ;

Число строковых литералов должно быть меньше или равно количеству строк в массиве. Если число строковых литералов меньше размера массива, то все остальные элементы инициализируются пустыми строками. Длина каждого строкового литерала должна быть строго меньше значения длины строки (для записи завершающего нуля).

char days[12][10] = <
"Январь", "Февраль", "Март", ”Апрель", "Май",
"Июнь", "Июль", "Август", "Сентябрь","Октябрь",
"Ноябрь", "Декабрь"
>;

При объявлении массивов строк с инициализацией допускается не указывать количество строк в квадратных скобках. В таком случае, количество строк в массиве будет определено автоматически по числу инициализирующих строковых литералов.
Например, массив из семи строк:

char days[][12] = <
"Понедельник", "Вторник", "Среда", "Четверг",
"Пятница", "Суббота", "Воскресенье"
>;

Функции для работы со строками в С

Все библиотечные функции, предназначенные для работы со строками, можно разделить на три группы:

  1. ввод и вывод строк;
  2. преобразование строк;
  3. обработка строк.

Ввод и вывод строк в С

Для ввода и вывода строковой информации можно использовать функции форматированного ввода и вывода (printf и scanf). Для этого в строке формата при вводе или выводе строковой переменной необходимо указать спецификатор типа %s. Например, ввод и последующий вывод строковой переменной будет иметь вид:

char str[31] = "";
printf("Введите строку: ");
scanf("%30s”,str);
printf("Вы ввели: %s”,str);

Недостатком функции scanf при вводе строковых данных является то, что символами разделителями данной функции являются:

  1. перевод строки,
  2. табуляция;
  3. пробел.

Функция gets предназначена для ввода строк и имеет следующий заголовок:
char * gets(char *buffer);

Между тем использовать функцию gets категорически не рекомендуется, ввиду того, что она не контролирует выход за границу строки, что может произвести к ошибкам. Вместо нее используется функция fgets с тремя параметрами:

char * fgets(char * buffer, int size, FILE * stream);

где buffer - строка для записи результата, size - максимальное количество байт, которое запишет функция fgets, stream - файловый объект для чтения данных, для чтения с клавиатуры нужно указать stdin. Эта функция читает символы со стандартного ввода, пока не считает n - 1 символ или символ конца строки, потом запишет считанные символы в строку и добавит нулевой символ. При этом функция fgets записывает в том символ конца строки в данную строку, что нужно учитывать.

Функция puts предназначена для вывода строк и имеет следующий заголовок:
int puts(const char *string);

Простейшая программа: ввод и вывод строки с использованием функций fgets и puts будет иметь вид:

char str[102] = "";
printf("Введите строку: ");
fgets(str, 102, stdin);
printf("Вы ввели: ");
puts(str);

Для считывания одного символа можно использовать функцию fgetc(FILE * stream) . Она считывает один символ и возвращает значение этого символа, преобразованное к типу int, если же считывание не удалось, то возвращается специальная константа EOF, равная -1. Функция возвращает значение -1 для того, чтобы можно было обрабатывать ситуацию конца файла, посимвольное чтение до конца файла можно реализовать следующим образом:

int c;
while ((c = fgetc(stdin)) != EOF) // Обработка символа
>

Для вывода одного символа можно использовать функцию int fputc(int c, FILE *stream); .

Помимо функций ввода и вывода в потоки в библиотеке stdio.h присутствуют функции форматированного ввода и вывода в строки. Функция форматированного ввода из строки имеет следующий заголовок:

int sscanf(const char * restrict buffer, const char * restrict string, [address] . );

Функции форматированного вывода в строку имеют следующие заголовки:

int sprintf(char * restrict buffer,
const char * restrict format, [argument] . );
int snprintf(char * restrict buffer, size_t maxsize,
const char * restrict format, [argument] . );

Преобразование строк

В С для преобразования строк, содержащих числа, в численные значения в библиотеке stdlib.h
предусмотрен следующий набор функций:
double atof(const char *string); // преобразование строки в число типа double
int atoi(const char *string); // преобразование строки в число типа int
long int atol(const char *string); // преобразование строки в число типа long int
long long int atoll(const char *string); // преобразование строки в число типа long long int

Корректное представление вещественного числа в текстовой строке должно удовлетворять формату:

После символов E, e указывается порядок числа. Корректное представление целого числа в текстовой строке должно удовлетворять формату:

Помимо приведенных выше функций в библиотеке stdlib.h доступны также следующие функции преобразования строк в вещественные числа:

float strtof(const char * restrict string, char ** restrict endptr);
double strtod(const char * restrict string, char ** restrict endptr);
long double strtold(const char * restrict string,char ** restrict endptr);

Аналогичные функции присутствуют и для преобразования строк в целочисленные значения:

long int strtol(const char * restrict string, char ** restrict endptr, int base);
unsigned long strtoul(const char * restrict string,
char ** restrict endptr, int base);
long long int strtoll(const char * restrict string,
char ** restrict endptr, int base);
unsigned long long strtoull(const char * restrict string,char ** restrict endptr, int base);

Функции обратного преобразования (численные значения в строки) в библиотеке stdlib.h присутствуют, но они не регламентированы стандартом, и рассматриваться не будут. Для преобразования численных значений в строковые наиболее удобно использовать функции sprintf и snprintf.

Обработка строк

В библиотеке string.h содержаться функции для различных действий над строками.
Функция вычисления длины строки:
size_t strlen(const char *string);

Функции копирования строк:

char * strcpy(char * restrict dst, const char * restrict src);
char * strncpy(char * restrict dst, const char * restrict src, size_t num);

Функции сравнения строк:

int strcmp(const char *string1, const char *string2);
int strncmp(const char *string1, const char *string2,size_t num);

Функции осуществляют сравнение строк по алфавиту и возвращают:

положительное значение – если string1 больше string2;
отрицательное значение – если string1 меньше string2;
нулевое значение – если string1 совпадает с string2;

Функции объединения (конкатенации) строк:

char * strcat(char * restrict dst, const char * restrict src);
char * strncat(char * restrict dst, const char * restrict src, size_t num);

Функции поиска символа в строке:

char * strchr(const char *string, int c);
char * strrchr(const char *string, int c);

Функция поиска строки в строке:
char * strstr(const char *str, const char *substr);

char str[] = "Строка для поиска";
char *str1 = strstr(str,"для"); //str1 == "для поиска"

Функция поиска первого символа в строке из заданного набора символов:
size_t strcspn(const char *str, const char *charset);

Функции поиска первого символа в строке не принадлежащему заданному набору символов:
size_t strspn(const char *str, const char *charset);

Функции поиска первого символа в строке из заданного набора символов:
char * strpbrk(const char *str, const char *charset);

Функция поиска следующего литерала в строке:
char * strtok(char * restrict string, const char * restrict charset);

В текстовом файле заменить одну заданную фразу на другую (файловый ввод/вывод)
Помогите, пожалуйста, написать 2 программы на С++ (отдельно). В файле input.txt записаны строки.


Замена подстроки в текстовом файле на другую строку
Разработайте программу replace.exe, выполняющую замену подстроки в текстовом файле на другую.


Заменить строку в текстовом файле
Дан текст, хранящийся в текстовом файле. Написать программу, которая позволит заменить строку в.


Найти в текстовом файле строку по заданному слову и заменить ей определённую часть строки в другом файле
Всех с Новым Годом! Наверное избитая тема, но все же. Задача такая: Существует два файла.

Считываешь всё в массив. Строку меняешь. Записываешь всё назад. nmcf,
Всё равно немного не пойму
Можете на примере показать я код прикрепил
по условию строку заменить в функции. можно примерно так:
Yetty,
Извините,а можно как то без вектора <vector>
Я просто такое ещё не изучал да, можно. есть два варианта - или подсчитать количество строк в файле и объявить динамический массив соответствующего размера или (вместо векторов и массивов) записать результат в новый файл, начальный файл удалить и переименовать новый файл в начальный Yetty,
А можете на примере показать
Я пытался, но в итоге получилось только это:
888224, не копируйте один и тот же код несколько раз. решение этой задачи я уже Вам показал. если хотите как-то по другому - переделайте предложенный код - как это сделать рассказал Вам выше. если что-то конкретно непонятно, спрашивайте

Yetty,
подсчитать количество строк в файле и объявить динамический массив соответствующего размера
как именно это реализовать для файла?

Добавлено через 4 минуты
На словах я особо не могу понять, что именно должно реализовываться

Должно быть так?
Только, как мне это сделать,то есть реализовать в программе?

888224, прежде чем объявить динамический массив, нужно определить его размер

читает файл построчно. организуйте счётчик строк

Yetty,
Я недавно повторял строки и у меня вроде,что получилось сделать
Но я не могу понять как реализовать всё это для данного задания, когда нужно заменять строки в файле

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

Добавлено через 1 минуту

что так ? это Вы напечатали строки, а нужно найти их количество Добавлено через 4 минуты
Yetty,
Вот тут у меня считает строки выше код да. теперь объявите динамический массив размера найденного размера и запишите в него строки. и это используйте вместо вектора

Yetty,
Я пытаюсь разобраться и не захламляю тему
Вы сами сказали Yetty,:если что-то конкретно непонятно, спрашивайте

Вот я и пытаюсь разобраться и заодно спрашиваю у вас

Добавлено через 9 минут
Yetty,

Добавлено через 8 минут
Yetty,


Я попытался сделать, так?


Но у меня не получается, чтобы строчка вводилась,а потом заменялась

Добавлено через 6 минут
Yetty,

Немного не понимаю, как это сделать. Я вроде подсчёт правильный сделал.Помогите,пожалуйста, я ведь понимаю совсем немного осталось доделать.Но не знаю как?
Я вроде так и вот так пробовал (выше код)
Всё равно не выходит. Я,Вас, понимаю вы стараетесь помочь мне. Скорее всего я не понимаю. Не могли бы вы мне на коде объяснить, как мне сделать это задание.Мне очень интересно его выполнить. Но увы у меня не получается, помогите пожалуйста,если, Вас, это не затруднит?

У меня есть два текстовых файла, источник.txt и Target.формат txt. Источник никогда не будет изменен и содержит N строк текста. Итак, я хочу удалить определенную строку текста в Target.TXT и заменить определенную строку текста из источника.txt, я знаю, какое количество строк мне нужно, на самом деле это строка номер 2, оба файла.

У меня есть что-то вроде этого:

но когда я открываю Writer, целевой файл стирается, он записывает строки, но при открытии целевой файл содержит только скопированные строки, остальные теряются.

что я могу сделать?

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

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

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

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

кроме того, недостатком прямой перезаписи старого файла с новым файлом является то, что если он потерпит неудачу на полпути, вы можете навсегда потерять все данные, которые не были записаны. При записи в третий файл сначала вы удаляете исходные данные только после того, как вы уверены, что у вас есть другая (исправленная) копия, поэтому вы можете восстановить данные, если компьютер аварийно завершит работу.

последнее замечание: я заметил, что ваши файлы имеют xml расширение. Возможно, вы захотите рассмотреть, имеет ли смысл использовать синтаксический анализатор XML для изменения содержимого файлов вместо замены определенных строк.

самый простой способ сделать это :

при создании StreamWriter Он всегда создает файл с нуля, вам нужно будет создать третий файл и скопировать из target и заменить то, что вам нужно, а затем заменить старый. Но, как я вижу, что вам нужно, это XML-манипуляция, вы можете использовать XmlDocument и измените файл с помощью Xpath.

вам нужно открыть выходной файл для доступа на запись, а не использовать новый StreamReader, который всегда перезаписывает выходной файл.

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

С этим потоком, вы можете читать, пока вы не дойдете до точки, где вы хотите внесите изменения, затем напишите. Имейте в виду, что вы пишете байты, а не строки, поэтому для перезаписи строки вам нужно будет написать то же количество символов, что и строка, которую вы хотите изменить.

Я думаю, что ниже должно работать (вместо части writer из вашего примера). К сожалению, у меня нет среды сборки, поэтому она из памяти, но я надеюсь, что это поможет

В этой статье демонстрируется несколько способов получения string путем изменения существующего объекта string . Все показанные методы возвращают результат изменений как новый объект string . Чтобы показать, что исходная и измененная строки являются отдельными экземплярами, в этих примерах результат сохраняется в новой переменной. При выполнении каждого примера можно изучить исходный string и новый, измененный string .

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

Замена текста

Следующий код создает новую строку, заменяя существующий текст.

В коде выше демонстрируется неизменяемое свойство строк. В примере видно, что исходная строка source не изменяется. Метод String.Replace создает новый объект string , содержащий изменения.

Метод Replace может заменять строки или отдельные символы. В обоих случаях заменяется каждое вхождение искомого текста. В следующем примере все символы ' ' заменяются на '_':

Исходная строка не изменяется. Возвращается новая строка с заменой.

Усечение пробелов

Используйте методы String.Trim, String.TrimStart и String.TrimEnd для удаления всех начальных или конечных пробелов. В приведенном ниже коде показан пример каждого метода. Исходная строка не изменяется. Эти методы возвращают новую строку с измененным содержимым.

Удаление текста

Вы можете удалять из строки текст с помощью метода String.Remove. Этот метод удаляет определенное число символов, начиная с указанного индекса. В следующем примере показано, как использовать String.IndexOf с Remove для удаления текста из строки:

Замена совпадающих шаблонов

Используйте регулярные выражения для замены текста, соответствующего шаблонам, на новый текст, который может быть определен шаблоном. В следующем примере используется класс System.Text.RegularExpressions.Regex для поиска шаблона в исходной строке и замены его с правильным регистром. Метод Regex.Replace(String, String, MatchEvaluator, RegexOptions) принимает в качестве одного из аргументов функцию, которая предоставляет логику замены. В примере эта функция ( LocalReplaceMatchCase ) является локальной функцией и объявляется внутри демонстрируемого метода. LocalReplaceMatchCase использует класс System.Text.StringBuilder, чтобы создать замещающую строку с правильным регистром.

Регулярные выражения наиболее эффективны при поиске и замене текста, который соответствует шаблону, а не известного текста. Дополнительные сведения см. в практическом руководстве по поиску строк. Шаблон поиска "the\s" ищет слово "the", за которым следует пробел. Эта часть шаблона гарантирует пропуск слова "there" в исходной строке. Дополнительные сведения об элементах языка регулярных выражений см. в разделе Элементы языка регулярных выражений — краткий справочник.

Метод StringBuilder.ToString возвращает неизменяемую строку с содержимым в объекте StringBuilder.

Изменение отдельных символов

Вы можете создать из строки массив символов, изменить содержимое массива, а затем создать из измененного содержимого новую строку.

В примере ниже показано, как заменить набор символов в строке. Сначала используется метод String.ToCharArray() для создания массива символов. Для поиска начального индекса слова "fox" используется метод IndexOf. Следующие три символа заменяются другим словом. Наконец, из обновленного массива символов создается новая строка.

Программная сборка содержимого строки

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

Примеры работы с текстовыми файлами. Модификация файлов. Сортировка данных в файлах. Конвертирование данных файла в массив

В данной теме наводятся примеры решения известных задач, возникающих при обработке текстовых файлов на языке C++. Проработав решения этих задач, вы научитесь обрабатывать массивы строчных данных, управлять распределением памяти а также использовать средства C++ для работы с текстовыми файлами.

Содержание

  • 2. Функция CountLinesInFile() . Подсчет количества строк в текстовом файле
  • 3. Функция GetStringsFromFileC() . Получить массив (список) строк типа char* из текстового файла
  • 4. Функция GetStringsFromFileS() . Получить массив строк типа string из текстового файла
  • 5. Функция SetStringsToFileS() . Записать массив (список) строк типа string в текстовый файл
  • 6. Функция ChangeStringInFileC() . Замена строки в текстовом файле
  • 7. Функция RemoveStringFromFileByIndex() . Удаление строки из файла по его номеру
  • 8. Функция InsertStringToFile() . Вставка строки в заданную позицию в файле
  • 9. Функция SwapStringsInFile() . Обмен местами двух строк в файле
  • 10. Функция ReverseStringsInFile() . Реверсирования строк файла (перестановка строк файла в обратном порядке)
  • 11. Функция SortStringsInFile() . Сортировка строк в файле
  • Связанные темы

Поиск на других ресурсах:

1. Как определить, что данные в текстовом файле закончились?

Для определения конца файла используется функция eof() . Функция возвращает результат типа bool . Прототип функции следующий

здесь std – пространство имен, в котором объявлена функция eof() .

Если при вызове функции текущий указатель чтения указывает на конец файла, то функция возвращает true . В противном случае функция возвращает false .

Пример 1.

Ниже приведен фрагмент кода, в котором используется функция eof() для определения, достигнут ли конец файла, которому соответствует экземпляр с именем inputFile

Пример 2.

Чаще всего функция eof() используется в цикле while при чтении строк файла

Как только будет достигнут конец файла inputFile , то произойдет выход из цикла.

2. Функция CountLinesInFile() . Подсчет количества строк в текстовом файле

Функция CountLinesInFile() возвращает количество строк в текстовом файле.

Использование функции GetStringsFromFileC() может быть, например, следующим:

4. Функция GetStringsFromFileS() . Получить массив строк типа string из текстового файла

Работа с типом string более удобна чем с типом char *. В следующем фрагменте кода реализована функция GetStringsFromFileS() , читающая строки из текстового файла и записывающая их в массив (список) типа string . Данная функция использует функцию CountLinesInFile() , которая описывается в пункте 2 данной темы.

Использование функции GetStringsFromFileS() может быть, например, следующим

Результат работы программы (содержимое файла TextFile1.txt ):

5. Функция SetStringsToFileS() . Записать массив (список) строк типа string в текстовый файл

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

Ниже приведен пример использования функции SetStringsToFileS() .

6. Функция ChangeStringInFileC() . Замена строки в текстовом файле

В примере приведена функция, заменяющая строку в файле в заданной позиции. Данная функция использует следующие функции:

Данная функция не использует дополнительный файл для копирования. Функция получает строки файла в виде списка lines, которые служат копией файла. Затем происходит запись этих строк в этот же файл за исключением строки, которую нужно заменить в файле. В позиции замены записывается входная строка замены. Таким образом происходит замена строки в текстовом файле.

Использование данной функции може быть, например, следующим:

По желанию, можно изменить ввод входных данных (имя файла, позиция, строка замены).

7. Функция RemoveStringFromFileByIndex() . Удаление строки из файла по его номеру

Удаление строки из файла по его номеру можно выполнять по примеру п. 6 (замена строки в текстовом файле).
Общий алгоритм следующий:

  • прочитать все строки файла в массив (список);
  • удалить строку из массива;
  • записать модифицированный массив обратно в файл.

Для формирования списка строк можно использовать функции GetStringsFromFileC() и GetStringsFromFileS() , которые описаны в пунктах 3 и 4.

Текст функции удаления строки по его номеру следующий.

Использование функции может быть, например, следующим

8. Функция InsertStringToFile() . Вставка строки в заданную позицию в файле

Подход такой же, как в предыдущих пунктах. Нужно получить строки файла в виде массива (тип string или char *). Затем нужно вставить строку в массив и записать измененный массив строк обратно в файл.
Если значение позиции вставки равно количеству элементов в файле, то строка добавляется в конец файла.

Вызов функции InsertStringToFile() в функции main() может быть следующим.

9. Функция SwapStringsInFile() . Обмен местами двух строк в файле

Сокращенный алгоритм функции SwapStringsInFile() следующий:

  1. Прочитать строки файла в список.
  2. Поменять строки в списке.
  3. Записать измененный список обратно в файл.

Текст функции обмена строк следующий.

Вызов функции SwapStringsInFile() из функции main() может быть следующим

10. Функция ReverseStringsInFile() . Реверсирования строк файла (перестановка строк файла в обратном порядке)

Алгоритм метода следующий:

  • считать строки из файла и записать их в массив;
  • обменять местами элементы массива так, чтобы строки массива размещались в обратном порядке;
  • записать измененный массив снова в файл

Текст функции ReverseStringsInFile() следующий

Использование ReverseStringsInFile () может быть, например, следующим

11. Функция SortStringsInFile() . Сортировка строк в файле

В примере демонстрируется сортировка строк файла с помощью метода вставки. Предварительно строки копируются в массив и там сортируются. Затем, отсортированный массив строк обратно записывается в файл.

Читайте также: