Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Файлы

Автор: Neon6868 22.04.2007 19:17

Задание:Написать программу, которая считывает текст из файла и определяет, сколько в нём слов, состоящих из не более чем четырёх букв.

Мне прогу написали, но мне надо её изменить.Я изменил, но она почему-то перестала работать!Файл открывается, но на экран ничего не выводится(как будто текст пустой)!И поэтому количество слов выводится 0.
Подскажите пожалуйста где ошибка!!!

Программа:

# include <stdio.h>
# include <conio.h>
# include <string.h>
# define name "G:\\text.txt"
# define znak ";,.?!"
void main()
{
FILE *f;
int x,y,i;
if (!(f=fopen(name,"rt"))) printf("\nOshibka otkritiya faila:");
fseek(f,0,SEEK_END);
long len=ftell(f);
char *s=new char[len+1];
x=0;
while (fgets(s,255,f))
{
puts(s);
i=0;
while (i<strlen(s))
{
while ((i<strlen(s)) && (strchr(znak,s[i]))) i++;
if (i<strlen(s))
{
y=i;
while ((i<strlen(s)) && (!(strchr(znak,s[i])))) i++;
x+=(i-y-1<=4)?1:0;
}
}
}
printf("Kol-vo slov,sostoyashix iz menee 4 bukv=%d\n",x);
fclose(f);
}

Автор: volvo 22.04.2007 20:05

Цитата
Файл открывается, но на экран ничего не выводится(как будто текст пустой)!
А где у тебя находится указатель файла, ты забыл? Ты ж его сам поставил на конец файла:

...
fseek(f,0,SEEK_END);
...

Ну, так перебрось в начало (то же самое, только SEEK_SET, или специальная функция rewind())

Автор: Neon6868 22.04.2007 20:29

Цитата(volvo @ 22.04.2007 17:05) *

А где у тебя находится указатель файла, ты забыл? Ты ж его сам поставил на конец файла:

...
fseek(f,0,SEEK_END);
...

Ну, так перебрось в начало (то же самое, только SEEK_SET, или специальная функция rewind())


И правда!Теперь всё работает!Большое спасибо!

Автор: kapusta 2.05.2007 2:14

Сори за офтоп, не удержался\\ а какое красивое сочетание переменных X.Y.I...)