Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ввод без остановки программы 
V
    Опции темы
pegazus
Дата 26.6.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.6.2009

Репутация: нет
Всего: нет



на turbo с++ 3.0 
нужно постоянно проверять не изменилось, ли что-нибудь в файле, при этом не останавливая прогу считывать с клавиатуры.  работает оч. нестабильно.  
как все это добро наладить?


Код


#include <stdio.h>
#include <conio.h>
#include <bios.h>
#include <dos.h>
#include <bios.h>
#include <string.h>

FILE *f;
char a[255],
     b[255],
     new_message[255],
     tf[255]="C:\\2.txt";


int r4in (void)
{
 int j, i=0;
 fseek(f,0,0);
 fgets(b, 255, f);

 if (strcmp(a,b))
     {
      strcpy(a,b);
      strcpy(new_message  ,b);
      return 1;
     }
  else return 0;
}


void main(void)
{
int i=0,
    count=0,
    x=0,
    y=0,
    j;
char message[255],
     key,
     *mess="",
     *log[255];
clrscr();

 f = fopen(tf , "r");

fgets(a, 256, f);
fseek(f,0,0);
fgets(b, 256, f);

do
 {
      while(bioskey(1) == 0)
       { 
           if ( r4in()==1 )  printf("<<< %s\n",new_message);
           delay(100);
       }
 
      key = bioskey(0);
      if (key == 13)
       {
         strcpy(log[count],  mess);   count++;
         mess = "";
          i = 0;
         gotoxy(1,1);clreol();
       }
       else
        {
           putch(key);
           mess[i]   = key; i++;
           mess[i+1] = '\0';
         }

/*
x=wherex();
y=wherey();
gotoxy(1,10);
clreol();
printf("%s   <-->  %d   <--> %d ",log[count-1],strlen(log[count-1]) ,count);
gotoxy(x,y);
  */
}
while (strcmp(log[count-1],"!exit") != 0);


clrscr(); puts("THE END"); getch();
fclose(f);
}




Это сообщение отредактировал(а) pegazus - 26.6.2009, 22:12
PM MAIL   Вверх
Cheloveck
Дата 26.6.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 5
Всего: 32



Во-первых - изменить тег Без подсветки на тег код C++, читать невозможно.


--------------------
user posted image
PM Jabber   Вверх
zim22
Дата 26.6.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Cheloveck @  26.6.2009,  21:27 Найти цитируемый пост)
Во-первых - изменить тег Без подсветки на тег код C++

во-вторых, отформатировать код
в-третьих, добиться того, чтобы код компилировался на gcc
в-четвёртых, прислать мне денег на вебмани
в-пятых, ... smile


--------------------
PM MAIL   Вверх
pegazus
Дата 27.6.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.6.2009

Репутация: нет
Всего: нет



Цитата

добиться того, чтобы код компилировался на gcc

выдает что не знает некоторых билиотек. да и зачем это нужно?

проблема именно в этом куске кода

Код

do
 {
      while(bioskey(1) == 0)
         { 
             if ( r4in()==1 )  printf("<<< %s\n",new_message);
             delay(100);
       }
   
      key = bioskey(0);
      if (key == 13)
       {
           strcpy(log[count],  mess);   count++;
           mess = "";
            i = 0;
           gotoxy(1,1);clreol();
         }
       else
          {
             putch(key);
             mess[i]   = key; i++;
             mess[i+1] = '\0';
           }
}
while (strcmp(log[count-1],"!exit") != 0);


в массив log должны записываться строки, но туда часто попадает чушь.  почему?
PM MAIL   Вверх
zkv
Дата 27.6.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 92



поверхностный осмотр показал неправильную работу с памятью:
Цитата(pegazus @  26.6.2009,  20:20 Найти цитируемый пост)
char     *mess="",

Цитата(pegazus @  26.6.2009,  20:20 Найти цитируемый пост)
           mess[i]   = key; i++;


память не выделяли, но пользуемся - нехорошо.

PM MAIL   Вверх
pegazus
Дата 27.6.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.6.2009

Репутация: нет
Всего: нет



zkv, благодарю.

добавил
Код

*mess = new char[1024];
for (j=0;j<=255;j++) log[j]= new char[1024];

заработало хорошо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.