Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
Есть код *с горем пополам склеенный ламмером*
Есть ошибки (не работает). Незнаю как исправить.
Гуры великие, помогите.
#include
#include
#include
#include
#include
#include
#include
#include
#define PROBEL ' '
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
int Finder(char x[])
{
char str[255];
char sym;
int flag = 0;
int ptr = 0;
setlocale(LC_ALL, "Rus");
printf("Введите текст:\n");
while ((sym = getchar()) != '\n')
{
if ((sym == PROBEL) && (!flag))
{
flag = 1; // set bit
str[ptr++] = sym; // save 1 probel
}
else
{
if ((flag) && (sym != PROBEL))
{
flag = 0;
}
}
if (sym != PROBEL)
str[ptr++] = sym;
}
str[ptr++] = '\0';
printf("Результат:\n %s\n", str);
return 0;
}
void main()
{
char x[255];
int k, * p;
FILE* f;
SetConsoleCP(1251); // Кириллица в консоли
SetConsoleOutputCP(1251); // ПКМ по окну > свойсва > сменить шрифт
setlocale(LC_ALL, "rus");
printf("Добро пожаловать в систему исправлений!\n");
printf("Пожалуйста, выберите нужный Вам раздел:\n'любая цифра' - для исправления ошибок в файле,\n'0' - для исправления ошибок вручным вводом:\n");
scanf_s("%d", &k);
if (k == 0)
{
gets_s(x);
Finder(x);
}
else
{
string Agent = "MyFile.txt";
ofstream fout;
fout.open(Agent);
if (!fout.is_open())
{
printf("Ошибка открытия файла! \n");
getchar();
}
else
{
printf("Файл обрабатывается...\n");
while (fgets(x, 100, f) && *x != '\n') {
for (p = strchr(x, ' '); p; p = strchr(p + 1, ' '))
while (*(p + 1) == ' ')
memmove(p + 1, p + 2, strlen(p + 1));
fprintf(stdout, "%s", x);
fprintf(f, "%s", x);
printf("Обработка файла завершена успешно! \n");
}
fout.close();
}
}
}