Появилась такая задача.
Есть 2 файла с текстами. Требуется переписать в третий файл предложения из двух данных поочередно. Как только закончится один из файлов - останов. Вроде просто, но как всегда...
С чтением/записью ничего сложного - разберемся. А вот на делении на предложения фантазия иссякла. Пробовал несколько вариантов, но либо получалось неочень либо вообще ничего. Был почти удачный момент с циклом, но он уходил в бесконечность если собрать в Turbo C++ 3.1 (дауж, но раз заказан такой компилятор) а на GCC 4.4.2 относительно нормально.
Вопрос: как таки правильно и не замудрено поделить текст на предложения? Хотябы только по точке или со знаками вопроса и восклицания.
Заранее спасибо.
Вот одна из попыток, которая на мой взгляд самая компактная и удачная из всех испробованых. Если вместо printf("%s\n", strtok( arr, "\n" )); писать просто printf("%s\n", arr); то будет куча лишних "\n" и проблема с предложениями, содержащими этот символ. Но предложения будут искаться более качественно. Ну и неизвестно, какой знак вконце.
Код:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *f;
char str[255];
char *arr;
int i,a;
f = fopen ("./test.txt","r");
do
{
fgets(str,254,f);
arr = strtok( str, ".!?" );
while( arr != NULL )
{
printf("%s\n", strtok( arr, "\n" ));
arr = strtok( NULL, ".!?" );
}
} while ((fscanf(f, "%s", str)) != EOF);
return 0;
}