Перезаписать файл, разнеся каждое предложение на новую строку, пользуясь только функциями обработки строк
Язык си. Есть текстовый файл с предложениями. Необходимо осуществить запись этих предложений в другой файл с условием того,что каждое предложение должно быть на своей строке. Нельзя использовать посимвольную обработку и динамическое выделение памяти. Только использовать функции обработки строк в си
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <iostream>
int main()
{
setlocale(LC_ALL, "ru");
const char fn[40] = "input.txt";
const char fn2[40] = "output.txt";
char str[500];
char* pp;
FILE* f;
FILE* f2;
//открыть файл
if ((f = fopen(fn, "rb")) == NULL) //при ошибке вывести сообщение
{
printf("Ошибка открытия файла %s\n", fn);
getchar();
return 0; //и выйти из функции
}
if ((f2 = fopen(fn2, "w")) == NULL) //при ошибке вывести сообщение
{
printf("Ошибка открытия файла %s\n", fn);
getchar();
return 0; //и выйти из функции
}
while (fgets(str, sizeof(str), f) != NULL)
{
if ((pp = strchr(str, '.')) || (pp = strchr(str, '!')) || (pp =
strchr(str, '?')))
*pp = '\n';
fputs(str, f2);
}
fclose(f2);
getchar();
return 0;
}
Предложения переносятся на новые строки, но не все. По моей задумке знаки концов предложений должны замениться на '\n', пробовала strstr, strtok,strrchr. Переносятся в основном первое, второе предложение. остальные остаются слепленными. Как это можно исправить?
Ответы (1 шт):
Автор решения: Marmaries
→ Ссылка
while((pp = strchr(str, '.')) || (pp = strchr(str, '!')) || (pp = strchr(str,
'?')))
заменить if на while и все будет получше)