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

Ваш аккаунт

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

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

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

Файлы

2.1K
11 января 2005 года
Werti
47 / / 31.01.2004
Открыть два или три файла найти искомое значение заменить и закрыть.
301
11 января 2005 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by Werti
Открыть два или три файла найти искомое значение заменить и закрыть.


Код:
ActiveControl=Form1;
 int A,bread,B=13,C=12;
 TFileStream *stream = new TFileStream("<имя файла>",fmOpenReadWrite | fmShareDenyNone  );
 do
 {
  bread=stream->Read(&A,2);
  if(A==B)
  {
   stream->Position-=2;
   stream->Write(&C,2);
  }
 }
 while(bread==2);
 delete stream;

Где A число, которое мы считываем, B - число которое мы заменяем, а C - число на которое мы заменяем. Повторить все это по мере необходимости.
7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
По поводу файлов. Есть у меня смутное /*хехе*/ предположение, что криво я все делаю...P(
Пишу на Си.
Вот, например, считываю я некоторую последовательность вида:
{{a,b,c},{1,2,3},{1},{1->a,2->b}}
И выходит что я с файла считываю с помощью fgetc() по одному символу, и начинается проверка, а вдруг это скобочка, или пробел, или тире....короче, такая запара...и путаюсь все время, и разбираться потом кому-то невесело будет и показать такое стыдно...
Наверняка же есть стандартные функции, которые считывают по словам....И, кстати, можно ли задавать там разделители, так чтобы считывались, например символы из каждого множества ({a,b,c}), и символы без "->" :/ ????
259
11 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka
По поводу файлов. Есть у меня смутное /*хехе*/ предположение, что криво я все делаю...P(
Пишу на Си.
Вот, например, считываю я некоторую последовательность вида:
{{a,b,c},{1,2,3},{1},{1->a,2->b}}
И выходит что я с файла считываю с помощью fgetc() по одному символу, и начинается проверка, а вдруг это скобочка, или пробел, или тире....короче, такая запара...и путаюсь все время, и разбираться потом кому-то невесело будет и показать такое стыдно...
Наверняка же есть стандартные функции, которые считывают по словам....И, кстати, можно ли задавать там разделители, так чтобы считывались, например символы из каждого множества ({a,b,c}), и символы без "->" :/ ????


Уважаемая Фиалка. Почитай в Хелпе про fprintf(...),fscanf(...).

7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Уважаемая Фиалка. Почитай в Хелпе про fprintf(...),fscanf(...).


Мысль, подкупающая своей новизной...;)
Мало того что у меня древний bc 3.1, так еще файла с хелпом нема.
хотя по такому поводу я пожалуй установлю себе что-нить поприличней.
спасибо.

259
11 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka

Мысль, подкупающая своей новизной...;)
Мало того что у меня древний bc 3.1, так еще файла с хелпом нема.
хотя по такому поводу я пожалуй установлю себе что-нить поприличней.
спасибо.


Ты права. Все старо как мир. А функции ничем не отличаются от стандартных printf и scanf.
н.п.р.

 
Код:
int a,b,c;
 int f;
 fopen(f,"sample.txt","r");
 fscanf(f,"{{%d,%d,%d}}/r/n",&a,&b,&c,);

ввод строки {{1,2,3}} в переменные a,b,c, где
a = 1
b = 2
c = 3
из файла f.
7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno

 
Код:
int a,b,c;
 int f;
 fopen(f,"sample.txt","r");
 fscanf(f,"{{%d,%d,%d}}/r/n",&a,&b,&c,);

ввод строки {{1,2,3}} в переменные a,b,c, где
a = 1
b = 2
c = 3
из файла f.


Обана. Супер!
Только...не факт, что у меня 3 переменных будет, значит я в сканфе не смогу указать сколько их считывать. (

259
11 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka

Обана. Супер!
Только...не факт, что у меня 3 переменных будет, значит я в сканфе не смогу указать сколько их считывать. (


Можешь и больше. Теоретически не ограничено,на практике не знаю.

7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Можешь и больше. Теоретически не ограничено,на практике не знаю.


Так, блин, у меня файл, где куча таких множеств...И в каждом разное количество переменных, и я не знаю сколько их пока не считаю.:{

259
11 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka

Так, блин, у меня файл, где куча таких множеств...И в каждом разное количество переменных, и я не знаю сколько их пока не считаю.:{

Тогда scanf не катит. И getch() нормальное решение.
ЗЫ: Слушай, а ты случаем не из 1С фаилы грузишь?

7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno
Тогда scanf не катит. И getch() нормальное решение.
ЗЫ: Слушай, а ты случаем не из 1С фаилы грузишь?


getch() же только по символу считывает? /*или я туплю*/
Неее, что ты...это у меня это так, учеба.
Начала париться с компиляторами. Сейчас разбираюсь с автоматами.

259
11 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka

getch() же только по символу считывает? /*или я туплю*/
Неее, что ты...это у меня это так, учеба.
Начала париться с компиляторами. Сейчас разбираюсь с автоматами.


Ну можно через fread(&buf,size, 1,f); прочитать сразу size символов в buf и там уже с ними разбираться.

ЗЫ: Разберешься с конечными автоматами - можно смело выходить замуж:angel:

7.5K
11 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Ну можно через fread(&buf,size, 1,f); прочитать сразу size символов в buf и там уже с ними разбираться.
ЗЫ: Разберешься с конечными автоматами - можно смело выходить замуж:angel:


тебя это все еще не бесит?:angel:
Дело в том, что в файле куча таких множеств, а мне надо из них построить автомат. Я ж не знаю, какой это множество длины-то...
Похоже, что придется оставить getc().
Или буду считывать построчно и уже потом там все лишние символы выбрасывать.
Ну спасибо за советы. Если не в этой программке, то в другой они мне наверняка пригодятся...
ЗЫ. Дык...конечные, Мили, Мура (детерминированные) готовы. Я их теперь в приличный вид пытаюсь привести.

4
11 января 2005 года
mike
3.7K / / 01.10.2002
ОФФ: Респект за подпись :) Только в первом слове ошибка.
7.5K
12 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by mike
ОФФ: Респект за подпись :) Только в первом слове ошибка.


гыгыгы.
исправила.

259
12 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Fialka

тебя это все еще не бесит?:angel:
Дело в том, что в файле куча таких множеств, а мне надо из них построить автомат. Я ж не знаю, какой это множество длины-то...
Похоже, что придется оставить getc().
Или буду считывать построчно и уже потом там все лишние символы выбрасывать.
Ну спасибо за советы. Если не в этой программке, то в другой они мне наверняка пригодятся...
ЗЫ. Дык...конечные, Мили, Мура (детерминированные) готовы. Я их теперь в приличный вид пытаюсь привести.


Код:
void GetAutomat(void)
{
    FILE* f;
    char str[256];  //буфер для чтения строки
    char oper[256]; //стек операций
    char arg[256];  //стек аргументов операций
    int i = 0;      //счетчики
    int opI = 0;    //операций
    int opA = 0;    //аргументов в операции
    int op2 = 0;    //для операций из двух символов

    f = fopen("automat.txt","r");
    if(f == NULL)
    {
        printf("Error an open file");
        return;
    }
    while(!foeof(f))
    {
        fscanf(f,"%s",&str[0]);   //читаем строчку
        for(int i = 0;i<256;i++)
            switch(str)
            {
                case '{':  oper[opI++] = '{';   //начало операции в стек
                    break;
                case '}':  //конец операции, вычисляем и заполняем аргументы
                    //opA - количество аргументов
                    //сворачиваем операцию
                    opI--; //долой ее из стека
                    break;
                case '-' : op2 = 1;
                    break;
                case '>' : if (op2 == 1)
                    oper[opI++] = '>'; //достаточно одного симовола
                    else
                        //ошибка в входном файле
                case ',' : //просто разделитель пробрасываем                   break;
                default : //остальные символы - аргументы операций. В стек аргументов
                    arg[opA++] = str;
            }
    }
}

Это конечно не истина, а руководство к мыслительному процессу.
7.5K
12 января 2005 года
Fialka
36 / / 10.01.2005
Цитата:
Originally posted by AlexandrVSmirno

 
Код:
void GetAutomat(void)...

Это конечно не истина, а руководство к мыслительному процессу.


Спасибо, это получше моих ифов будет...:)

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