Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 23:42   #1
EasyMak
Пользователь
 
Регистрация: 26.11.2014
Сообщений: 27
По умолчанию Работа с файлами(СИ).

Дан файл, содержащий некоторый текст. Оставить в этом файле только те фразы, в которых имеется числовая информация.
EasyMak вне форума Ответить с цитированием
Старый 26.12.2014, 07:08   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,604
По умолчанию

Примерно так

Код:
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <malloc.h>
#include <math.h>
#include <windows.h>

int main()
{ 
 char buf[128]; // буфер для чтения из 128 символов. В общем случае буфер должен принимать любое количество символов.
 FILE* f; // открываемый файл
 int i, j; // итераторы
 int fl; // флаг, указывающий, есть ли арабская цифра в предложении  (предложения разделены точками)
 int k; // итератор
 int l; // итератор
 char tempbuf[128]; // временный буфер
 char buf2[128]; // конечный буфер  для записи в файл

 i = 0;
 f = fopen("text.txt", "r"); // открываем файл 
 while (!feof(f)) // пока не достигнут конец файла
  buf[i++] = fgetc(f);  // весь файл посимвольно записываем в буфер
 fclose(f); // закрытие файла

 buf[i] = '\0'; // терминирование буфера, чтобы можно было определить, где конец

 for ( i = 0; buf[i] != '\0'; i++)
  printf("%c", buf[i]); // посимвольный вывод буфера

 fl = 0; // флаг наличия цифры не выставлен
 j = 0; // итератор
 k = 0; // итератор

 for (i = 0; buf[i] != '\0'; i++) // итерирование по буферу для чтения
 {
   tempbuf[j++] = buf[i]; // запись предложения во временный буфер
   if (buf[i] >= '0' &&  buf[i] <= '9') // если попалась цифра
    fl = 1; // выставляем флаг

   if (buf[i] == '.' && fl == 1) // если попалась точка и выставлен флаг
   {
     fl = 0; // сбрасываем флаг
     for ( l = 0; l < j; l++) // итерирование по временному буферу
       buf2[k++] = tempbuf[l]; // из временного буфера записываем в буфер для записи
     j = 0; // итератор по временному буферу выставляем в 0
   }
   else    if (buf[i] == '.' && fl == 0)
   {
     j = 0; // итератор по временному буферу устанавливается в 0
   }

 }
 buf2[k] = '\0'; // терминирование буфера для записи в файл

 f = fopen("text.txt", "w"); // открытие файла на запись
 for (i=0; buf2[i] != '\0'; i++)
  fputc(buf2[i], f); // запись символа в файл из буфера для записи
 fclose(f); // закрытие файла
 return 0;
}


/*
 char c;
 f = fopen("text.txt", "r");
 while (!feof(f))
 {
  c = fgetc(f);
  printf("%c", c);
 }
 fclose(f);
*/
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 26.12.2014, 17:45   #3
EasyMak
Пользователь
 
Регистрация: 26.11.2014
Сообщений: 27
По умолчанию

Спасибо большое!!!
EasyMak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами на СИ++ Config Помощь студентам 0 21.01.2014 14:36
работа с файлами Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 23.02.2011 11:11
работа с файлами на C# Dimarik C# (си шарп) 7 30.11.2010 22:25
Работа с файлами lubov_morkov Паскаль, Turbo Pascal, PascalABC.NET 8 10.06.2010 11:59