IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Файлы, Язык Си, помогите найти ошибки
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


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

Вот программа, но когда я её запускаю, то она зависает. И я сделал, чтобы число выводилось только в конце всего текста, а как можно сделать, чтобы оно считалось и выводилось после каждого предложения?

# include <stdio.h>
# include <string.h>
# define name "D:\\text.txt"
# define znak ".?!"
void main()
{
FILE *f;
int x,y,i;
if (!(f=fopen(name,"rt"))) printf("\nOshibka");
fseek(f,0,SEEK_SET);
long len=ftell(f);
char *s=new char[len+1];
printf("\nVvedite slovo\n");
char *ch=new char[255];
scanf("%s",ch);
i=0;
while (i<strlen(s))
{
while ((i<strlen(s)) && (!(strchr(znak,s[i]))))
{
i++;
printf("\n%c",s[i]);
if (strstr(s,ch)) x++;
}
}
fclose(f);
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну, если на С, тогда вот так попробуй:

#include <stdio.h>
#include <string.h>

#define fname "text700.txt"
#define STR_MAX 1024
#define BUFF_LEN 80
#define FINAL ".!?"

int main() {

char s[STR_MAX], buf[BUFF_LEN + 1], *p, *pp;
char word[10];

int len, n, counter;
FILE *f;

if((f = fopen(fname, "rt")) == NULL) {
printf("Error: cannot open file %s", fname);
return 1;
}

printf("enter word: ");
gets(word);

s[0] = '\0';
while(!feof(f)) {
fgets(buf, 80, f);
if((len = strlen(buf)) > 0) buf[len - 1] = (char)32;
strcat(s, buf);
}
fclose(f);

counter = 0;
p = strtok(s, FINAL);
while(p) {

pp = p;
n = 0;
do {
pp = strstr(pp, word);
if(pp) { n += 1; ++pp; }
} while(pp);
printf("sentence #%d: %d word(s)\n", ++counter, n);

p = strtok(NULL, FINAL);
}

return 0;

}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Спасибо за помощь! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.01.2022 11:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name