Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [С]программа, которая считывает текст


Автор: makasin773 2.2.2012, 21:00
Напишите программу, которая считывает текст из файла и выводит на экран все строки файла, после каждой строки добавляя, сколько раз в ней встретилось слово, введенное с клавиатуры. Необходимо предусмотреть случай, если файла не существует. Работа в Турбо Си обязательна.

Автор: bsa 3.2.2012, 10:27

M
bsa
Для домашних заданий, курсовых и т.п. существует \"Центр Помощи\".




Тема перенесена. 

Автор: t_gran 4.2.2012, 17:00
Код

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

//----------------------------------------------//
bool FindWord(char** begin, char** end)
{
   for (;**begin && !isalpha(**begin); (*begin)++);

   *end = *begin;

   for (;**end && isalpha(**end); (*end)++);

   return **end;
}
//----------------------------------------------//
unsigned GetCountWords(char* text, const char* word)
{
   unsigned count = 0;

   char* begin = text;
   char* end = text;

   size_t len = strlen(word);

   while (FindWord(&begin, &end))
   {
      if (len == (end-begin))
      {
         if (strncmp(begin, word, len) == 0)
         {
            count++;
         }
      }

      begin = end;
   }

   return count;
}
//----------------------------------------------//
int FileToFile(const char* infile, const char* outfile, const char* word)
{
   FILE* fin = fopen(infile, "r");

   if (!fin)
   {
      return 1;
   }

   FILE* fout = fopen(outfile, "w");

   if (!fout)
   {
      fclose(fin);
      return 2;
   }

   char buff[1024];
   size_t size = sizeof(buff) / sizeof(*buff);

   while (!feof(fin))
   {
      fgets(buff, size, fin);
      fprintf(fout, "[%2d] %s", GetCountWords(buff, word), buff);
   }

   fclose(fout);
   fclose(fin);

   return 0;
}
//----------------------------------------------//
int main()
{
   const char* COutputFileName = "out.txt";

   char fname[256], word[32];

   printf("name of file: ");
   scanf("%s", fname);

   printf("searching word: ");
   scanf("%s", word);

   if (FileToFile(fname, COutputFileName, word))
   {
      printf("Error in execute function ...\n");
      return 1;
   }

   return 0;
}

Правда за TurboC не ручаюсь, этот раритет встречается только в университетах и у студентов первых курсов. Никто уже этой штукой не пользуется. Ниже, в архиве, 3 бинарника полученные компиляторами http://gcc.gnu.org/, http://www.digitalmars.com/ и http://bellard.org/tcc/.

Автор: BestCoder1 6.2.2012, 16:30
Могу выполнить, если актуально
icq: 588002847
email: [email protected]
skype: rfhfcerf

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)