Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11595
Последний выпуск: 19.06.2015

Работа с файлами Visual studio с++

80K
09 марта 2012 года
Artem5656
3 / / 09.03.2012
Будте добры, помогите разобраться с задачей: дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Оставить в этом файле только те фразы, в которых имеется числовая информация. Любой помощи буду благодарен. Спасибо. Фразой тут является предложение от точки до точки. Вот если какая-либо числовая информация встретится, то все предложение нужно оставить. Все остальное удалить. Вот мое тело, но как сделать, что бы осталось целое предложение не могу придумать(


Код:
# include <stdio.h>
 
int main ()
{
        char n;
        FILE *fin;
        if((fin=fopen("read.txt","rt"))==0)
        {
                printf("File can not found");
                return 1;
        }
        while (!feof(fin))
        {
                fscanf(fin,"%c",&n);
                printf("%c",n);
        }
        fclose(fin);
}
292
10 марта 2012 года
Alm3n
889 / / 29.05.2009
Читать в буфер всё.
От начала буфера и до конца:
1. start <- позиция начала или current+1, если пришли с шага 3
2. current <- start или current+1, если пришли с шага 3
3. До тех пор, пока current не равно концу буффера и не больше него
если current == числу
current передвигать вперёд до точки. копировать в другой буфер всё от start до current. идти на шаг 1.
иначе current передвинуть на позицию вперёд.
Как-то так.
Читать, кстати, можно и не посимвольно, а сразу блоком или строками. Да, лучше строками, но блоками было бы лучше.
67K
11 марта 2012 года
NoXCode
64 / / 11.03.2012
Код:
#include <stdio.h>
#include <stdlib.h>
#include <cctype>
#include <conio.h>
#include <string.h>

    FILE *fp_in = NULL, *fp_out = NULL;
    const char* filename[2] = { "in.txt", "out.txt" };
    if (((fp_in = fopen(filename[0],"r")) != NULL) &&
        ((fp_out = fopen(filename[1],"w+")) != NULL))
    {
        int i = 0; char ch = '\0';
        char* psz = new char[256];
        while ((ch = fgetc(fp_in)) != EOF)
        {
             if (ch != '.')
             { psz = ch; i++; continue; }

             psz[i+1] = '\0';
             for (int n = i-1; n >= 0; n--)
                  if (isdigit(psz[n]))
                  {  
                psz = '.';
                fputs(psz,fp_out);
                break;
                  }

                           strcpy(psz,"\0"); i = 0;
        }
    }
   
    else
    {
        static char* msg = "\0";
        sprintf(msg,"Cannot open file %s\0",filename);
        perror(msg);
    }

    fclose(fp_in);
    fclose(fp_out);
67K
11 марта 2012 года
NoXCode
64 / / 11.03.2012
in.txt:
--------
Hello.New 2012 year.Workmanship.Hello man of 666.Die Hard.999-444.(222)555-6666.Works.That's all folks


out.txt:
----------
New 2012 year.Hello man of 666.999-444.(222)555-6666.
80K
16 марта 2012 года
Artem5656
3 / / 09.03.2012
Вот попытался сам, но дошел только до того что из исходного файла программа оставляет только те предложения в которых содержится хотя бы одна единица, как сделать так чтобы она оставляла все фразы в котором содержится любая числовая информациия?((


Код:
# include <stdio.h>
# include <string.h>

int main ()
{
    FILE *fin,*fout;
    int i,k;
    char str [100];
    fin=fopen("read.txt","rt");
    fout=fopen("write.txt","wt");
    if(fin==NULL&&fout==NULL)
    {
        printf("File can not found");
        return 1;
    }
    while (!feof(fin))
    {
        i=0;
        do
        {
            fscanf (fin,"%c",&str);
            i++;
        }while (str[i-1]!='.');
        str='\0';
        k=0;
        for(i=0;i<strlen(str);i++)
            if(str=='1')
                k=1;
        {
            if(k==0)
                fprintf(fout,"%s\n",str);
        }

       
    }
    fclose(fin);
    fclose(fout);
    return 0;
}
67K
18 марта 2012 года
NoXCode
64 / / 11.03.2012
Код размещенный 11 марта как раз и выполняет поставленную задачу.
292
18 марта 2012 года
Alm3n
889 / / 29.05.2009
Цитата:
из исходного файла программа оставляет только те предложения в которых содержится хотя бы одна единица


Что-то мне подсказывает, что дело в этом:

 
Код:
if(str=='1')

isdigit()

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог