Программа для удаления лишних пробелов, табуляций, строк в файле (Си) - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите написать программу (Си), которая удаляла бы лишние пробелы, табуляции и пустые строки в файле.
Находил только для удаления пробелов, добавить туда удаление табуляций и пустых строк не смог.
Благодарю.
Решение задачи: «Программа для удаления лишних пробелов, табуляций, строк в файле (Си)»
textual
Листинг программы
while (fgets(pBuf,BUF_SIZE,pIn)) { pBuf[BUF_SIZE - 1] = 0; // ASCIIZ ! DWORD dwEOL = strcspn(pBuf,"\r\n"); pBuf[dwEOL] = 0; // Remove EOL chars // Remove TABs if (*pBuf && bRemoveTabs) { char* pLine = pBuf; while (pLine && *pLine) { if (*pLine == '\t') { *pLine = ' '; } ++pLine; } } // Remove Leading Spaces char* pBegin = pBuf; while (pBegin && *pBegin == ' ') { ++pBegin; } // Remove Trailing Spaces int iSize = strlen(pBuf); if (iSize) { char* pEnd = pBuf + (iSize - 1); while (pEnd && (pEnd > pBegin) && *pEnd == ' ') { *pEnd = 0; --pEnd; } } char* pTxt = pOutBuf; // Remove Duplicated Spaces while (pBegin && *pBegin) { if ((*pBegin == ' ') || (bRemoveTabs && (*pBegin == '\t'))) { *pTxt++ = *pBegin++; // Copy the First while ((*pBegin == ' ') || (bRemoveTabs && (*pBegin == '\t'))) { ++pBegin; // Skip ! } } *pTxt++ = *pBegin++; // Just Copy } *pTxt = 0; // ASCIIZ // Remove EMPTY lines if (!strlen(pOutBuf)) { if (bRemoveEmptyLines) { continue; } } fprintf(pOut,"%s\r\n",pOutBuf); }
Объяснение кода листинга программы
- Прочитать строку из файла в буфер с помощью функции
fgets()
. - Удалить символы новой строки (
\r\n
) с помощью функцииstrcspn()
иmemset()
. - Удалить символы табуляции (
\t
) путем замены каждого символа табуляции на пробел. - Удалить ведущие пробелы путем перебора буфера от начала строки до первого не пробельного символа.
- Удалить конечные пробелы путем перебора буфера от конца строки до первого не пробельного символа.
- Удалить повторяющиеся пробелы путем перебора буфера и замены последовательности пробелов на один пробел.
- Если строка пустая и буфер для вывода пустой, пропустить строку.
- Вывести обработанную строку в файл вывода с помощью функции
fprintf()
. - Если файл вывода пустой, пропустить строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д