Найти нужные слова и записать их в другой файл на (С).

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Brocel
Сообщения: 1
Зарегистрирован: 16 дек 2016, 10:16

16 дек 2016, 10:20

Выделить в текстовом файле все слова, разделенные символами-разделителями «_.,;:\n\t!?», и все слова, в которых присутствуют гласные латинские буквы, построчно записать в другой текстовый файл.
Нашел такие слова, но не знаю как записать в другой файл.

Код: Выделить всё

#include <cstring>
#include <stdio.h>
#include <ctype.h>
#define DELIMITERS " .,:;?!\n\t"
#define GLAS "AaEeIiOoUuYy"
#define N 1024
int Count(char *s)
{
int i,flag=0;
for(i = 0; s[i] != '\0'; i++)
if (strchr(GLAS,s[i]))//нахожу слова в которых есть слова с гласной буквой
flag=1;
else flag=0;
return flag;
}
int ReadWords(char *fname,char *fname1)
{
FILE *f,*g;
char s[N], *word;
int i, j, flag[256] = {0};
if ((f = fopen(fname, "r")) == NULL)//открыл файл в котором есть слова 
return 1;
if ((g = fopen(fname, "w")) == NULL)//открыл другой файл в который буду записывать
return 1;
for (i = 0; DELIMITERS[i]; i++)
flag[DELIMITERS[i]] = 1;
while (fgets(s, N, f) != NULL)
{
for (i = 0; s[i] && flag[s[i]]; i++)
;
while (s[i])
{
word = s + i;
while (s[i] && !flag[s[i]])
i++;
j = i;
while (s[i] && flag[s[i]])
i++;
s[j] = '\0';
if (Count(word) == 1)//если в файле есть нужные слова то...
 
}
}
fclose(f);
fclose(g);
return 0;
}
int main( )
{
ReadWords("c:\\a.txt"); return 0;
}
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

20 дек 2016, 13:18

Случайно в строках 25 и 26 не будет зацикливания в цикле for. Ведь строка DELIMETERS не содержит нуля. Решение: поставить \0 в конце строки.
А что вообще сложного что-то в файл записать. Вы уже сделали всю(самую сложную) работу и если она правильно сделана запишите просто массив в файл и все.
Пишете просто функцию fputs() и все. Положите так все слова как строки и все.
fputs() - пишет строку в файл,
fputс() - пишет символ в файл.
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

20 дек 2016, 13:20

В какой среде пишете, если не секрет?
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

20 дек 2016, 14:25

Что-то код Ваш не находит нужные слова? Над ним еще работать и работать. А "-"(символ минуса или тире) не является разделителем что-ли?
Ответить