|
|
|
| Функция считает количество строк в файле.
Как бы ее слегка подправить, чтобы она считала
количество предложений ( в конце . или ? или !) в файле
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int number_string(char *fileIn);
int main() {
char *fileIn = "D:\\MyLib\\mozg.txt";
const int NUMBER_LINE = number_string(fileIn);
cout << "Число строк в файле: "<< NUMBER_LINE << endl;
return 0;
}
// Функция подсчета количества строк в файле
int number_string(char *fileIn)
{
FILE *fp;
fp = fopen (fileIn,"r"); // Откыть файл
if (fp==NULL) {cout << "невозмжно открыть файл"
<< ferror(fp) << endl; return -1;}
const int LENGTH =10000;
int count = 0;
char str [LENGTH];
//Считываем строки из файла и считаем их
while (!feof(fp)) {
fgets (str, LENGTH,fp);
count++;
}
fclose (fp); // Не забыть бы закрыть файл
return count;
} | |
|
|
|
|
|
|
|
для: dimdln
(25.06.2007 в 22:17)
| | все очень просто! тебе надо считывать файл посимвольно функцией
char ch;
fscanf(file,"%c",&ch);
и попутно записывая это в строчку s:
char s1[2];s1[0]=ch;s1[1]=0;
strcat(s,s1);
если ch равно ? или ! или . или \0
то предложение прочитано!
итого:
char* Read1PredlozenieFromFile(FILE*file)
{
char s[1000];s[0]=0;
char ch=1;
while(ch!=0 && ch!='!' && ch!='?' && ch='.')
{
fscanf(file,"%c",&ch);
char s1[2];s1[0]=ch;s1[1]=0;
strcat(s,s1);
}
return s;
}
|
эта функция читает 1 предложение из файла. | |
|
|
|
|
|
|
|
для: alex19921992
(26.06.2007 в 06:47)
| | Спасибо, Alex! Поплавская тоже помогла. В результате родилось такое решение.
Теперь предложение надо поместить в структуру (какую - пока не знаю) и
попроботать написать программу анализа предложения
// sentences.cpp Программа считывает в буфер текстовый файл,
// находит признак конца предложения и выводит предложение куда
// хотите (в файл, на экран, в структуру и т.д.)
// Microsoft visual c++ Express 2005 Edition
#include <stdafx.h>
#include <stdio.h>
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fin("D:\\MyLib\\mozgtest.txt",ios::in) ;
if (!fin) {cout << "невозмжно открыть файл"
<< endl; return -1;}
fin.seekg(0,ios::end); //перемещение текущей позиции в
конец
long len = fin.tellg(); // определение длины АЙЛА
char* buf =new char[len+1]; // выделяет len+1 байтов под буфер
buf
fin.seekg(0,ios::beg); //перемещение текущей позиции снова в
начало
fin.read(buf,len); // считывает файл в буфер
buf[len] ='\0'; // нуль-символ - признак конца
масива
//-------------
int n=0, i=0,j=0;
int count =0; // количество предложений в
тексте
while(buf[i]) { //читает буфкр до тех пор, пока
не встретит \0
if(buf[i] == '.' || buf[i]=='?' || buf[1] == '!'){
for(j==n; j<=i; ++j) // ОБЯЗАТЕЛЬНО ==, иначе не
работает
cout << buf[j] ; cout << endl;
count++;
}
n = i+1;
i++;
}
cout << "Всего предложений в файле " << count << endl;
fin.close();
return 0;
}
//21:32 27.06.2007 dimdln | |
|
|
|