работа с текстовыми файлами
помогите плиз,у меня имеется текстовый файл,а мне надо найти кол-чество слов в каждом предложение?????все на си
Так чем конкретно помочь?
Так чем конкретно помочь?
ну я и говорю как мне отделить от всего текста каждое предложение,а потом внутри него подсчитать количество слов
ну я и говорю как мне отделить от всего текста каждое предложение,а потом внутри него подсчитать количество слов
Достаточно просто.
Предложение заканчивается точкой, вопросительным и восклицательными знаками.
Внутри предложения слова разделены пробелами и др. знаками препинания.
Не обязательно сначала искать предложения, а потом в них слова.
Перебираешь текст посимвольно. Если встретил после цифро-буквенного символа нецифробуквенный, увеличивай счетчик слов. Если встретил точку, вопрос или восклицание, отсчитывай предложение.
Только учти ещё, что есть тире и подчеркивания, которые не разделяют слово.
Достаточно просто.
Предложение заканчивается точкой, вопросительным и восклицательными знаками.
Внутри предложения слова разделены пробелами и др. знаками препинания.
Не обязательно сначала искать предложения, а потом в них слова.
Перебираешь текст посимвольно. Если встретил после цифро-буквенного символа нецифробуквенный, увеличивай счетчик слов. Если встретил точку, вопрос или восклицание, отсчитывай предложение.
Только учти ещё, что есть тире и подчеркивания, которые не разделяют слово.
спасибо,а какую функцию лудше использовать для поистка нужного символа,...strtok?
спасибо,а какую функцию лудше использовать для поистка нужного символа,...strtok?
Посимвольный поребор проще всего реализовать в обычном цикле.
counter = 0;
for (int i=0; i < strlen(input); i++)
{
char Symbol = input;
if (Symbol=='.' || Symbol== '!' || Symbol== '?')
counter++;
if (Symbol=='-' || Symbol==',' || Symbol==' ' )
words++;
}
Могу ошибиться... давно не писал на C/C++
Посимвольный поребор проще всего реализовать в обычном цикле.
counter = 0;
for (int i=0; i < strlen(input); i++)
{
char Symbol = input;
if (Symbol=='.' || Symbol== '!' || Symbol== '?')
counter++;
if (Symbol=='-' || Symbol==',' || Symbol==' ' )
words++;
}
Могу ошибиться... давно не писал на C/C++
Корректней будет, если цикл
...
заменить на
for (int i=0; i < len; i++)
...
ну или
...
Зачем постоянно высчитывать длину строки?
#define OUTW 0
#define INW 1
int main()
{
int word_count=0, flag=OUTW;
char c;
while ( (c = getchar()) != EOF )
{
if ( c==' ' ||c == '\n' || c == '\t' || c == '-')
{
flag=OUTW;
}
else if (flag == OUTW)
{
flag=INW;
++word_count;
}
}
printf ("words: %d\n", word_count);
return 0;
}
в большинстве случаев разделителями слов выступают пробелы, табуляция и конец строки. знаки припинания пишуться слитно со словом и могут считаться его частью, что на подсчет не повлияет.
я бы предложил такой вариант.
code:--------------------------------------------------------------------------------
#include <stdio.h>
#define OUTW 0
#define INW 1
int main()
{
int word_count=0, flag=OUTW;
char c;
while ( (c = getchar()) != EOF )
{
if ( c==' ' ||c == '\n' || c == '\t' || c == '-')
{
flag=OUTW;
}
else if (flag == OUTW)
{
flag=INW;
++word_count;
}
}
printf ("words: %d\n", word_count);
return 0;
}
--------------------------------------------------------------------------------
в большинстве случаев разделителями слов выступают пробелы, табуляция и конец строки. знаки припинания пишуться слитно со словом и могут считаться его частью, что на подсчет не повлияет.
а не подскажишь как лудше сделать, так что бы прога искала кол-во слов не в тексте который мы набиваем вручную, а работала с готовым txt файлом????
а не подскажишь как лудше сделать, так что бы прога искала кол-во слов не в тексте который мы набиваем вручную, а работала с готовым txt файлом????
запускать программу так:
prog.exe < text.txt
запускать программу так:
prog.exe < text.txt
видно,я полный тюфяк,но нас учат что типа надо работать с тектовами файлами,через указатель,а что ты написал prog.exe < text.txt ,я вообще не понял=(
видно,я полный тюфяк,но нас учат что типа надо работать с тектовами файлами,через указатель,а что ты написал prog.exe < text.txt ,я вообще не понял=(
извини, я забыл, что тут в основном "подоконники" :) строка
prog.exe < text.txt
означает направление содержимого файла text.txt на стандартный поток ввода программы prog.exe, так, как будто ты руками вводишь данные.
извини, я забыл, что тут в основном "подоконники" :) строка
prog.exe < text.txt
означает направление содержимого файла text.txt на стандартный поток ввода программы prog.exe, так, как будто ты руками вводишь данные.
а кажется,понял,вместо переменной "с" просто пишем FILE *f,и дальше работаем с этой переменной f