Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/117: Рейтинг темы: голосов - 117, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 6

Очистить строку для записи нового

24.07.2010, 10:55. Показов 23148. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть устройство - x86 машинка, там стоит DOS. С компьютером оператора общается через COM порт.
С putty или гипертерминала вводится команда, которая интерпретируется программой и выдается некий ответ.
Пишу на borland C++ 3.0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int j=0;
char command[16];
char ch;
...
инициализация порта
...
do { c = inportb(PORT1 + 5);        проверяет поступление байта по флагу
      if (c & 1)
     {
        ch = inportb(PORT1);
        if (ch==13)
        {
           j=0;
           process(command);
        }
        command[j]=ch;
        j++;
     }
    } while (ch !=27);
}
 
void process(char command[])
{
   if (!strcmp(command,"VOLT1"))
     func_volt1();
   else if (!strcmp(command,"VOLT2"))
     func_volt2();
   else if (!strcmp(command,"TEMP"))
     func_temp();
   else {
     reply(error_msg);
     }
 
  //   strcpy(command,"");
  // delete command;
  // command = new char[16];
  //   memset (command, 0, 16);
  //   printf("%s\n",command);
 
}
Пробовал все варианты, что закомменчены внизу, - сначала программа работает правильно, но уже после первого прохода не воспринимает верно введенную команду и выдает "error_msg".
Я думаю, проблема в том, что не удается вернуть массив command в первоначальное "девственное" состояние.
Помогите найти проблему.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2010, 10:55
Ответы с готовыми решениями:

Как очистить файл который открыт для записи без пересоздания
Добрый день! Подскажите, пожалуйста,как очистить файл который у меня открыт для записи?Вариант удалить и создать новый не подходит.

CMA Ariston AC106B FR, Нужна прошивка для записи нового модуля
CMA Ariston AC106B FR . S/N:209073402 * 80258170000. Пожалуйста поделитесь прошивкой. Для записи нового модуля.

Хочу чтоб при создании нового документа реквизиту присваивалось значение по умолчанию-Поле объекта недоступно для записи
Хочу чтоб при создании нового документа реквизиту присваивалось значение по умолчанию Вид Цены и Склад Вот код (обычная форма) ...

6
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.07.2010, 11:40
После:
Цитата Сообщение от BrotherRabbit Посмотреть сообщение
C++
1
process(command);
попробуйте вставить:
C++
1
strcpy(command, "");
0
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 6
24.07.2010, 13:42  [ТС]
Увы, не помогает.((
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
24.07.2010, 15:45
Так попробуйте:
C++
1
2
3
4
5
6
if (ch==13)
{
  command[j] = '\0';
  j=0;
  process(command);
}
1
0 / 0 / 0
Регистрация: 14.04.2010
Сообщений: 6
24.07.2010, 17:03  [ТС]
Никакого эффекта. Причем если вывести строку на экран, - пустое место.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.07.2010, 17:20
BrotherRabbit, у вас ошибка в закомментированной попытке:
C++
1
delete command;
Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
char *command = new char[16];
strcpy(command,"text");
// выполнили первое действие
memset(command, NULL, 16);
delete []command;
command = NULL;
// удалили
command = new char[16];
// новая попытка
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
25.07.2010, 01:08
BrotherRabbit, попробуйте изменить цикл следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
do { 
  c = inportb(PORT1 + 5);
  if (c & 1)
  {
    ch = inportb(PORT1);
    if (ch == 13)
    {
      command[j] = '\0';
      process(command);
      j = 0;
    }
    else
    {
      command[j] = ch;
      j++;
    }
} while (ch != 27);
Должно помочь.
В process ничего не делайте, только выводите на экран. Должно быть все нормально.
Если что-то не так - запостите вывод сюда.

Добавлено через 7 часов 44 минуты
BrotherRabbit, проблема решена?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2010, 01:08
Помогаю со студенческими работами здесь

Очистить поле в записи
К примеру, есть в DBGrid информация о студентах, проживающих в общежитии. Я хочу определенного студента выселить из комнаты общежития. Я...

Очистить строку
Здравствуйте Подскажите пожалуйста как в TASM можно очистить строку

Очистить консольную строку
Здр; Подскажите как очистить консольную строку(а именно стереть всё к черту из консоли)

Очистить строку от предлогов
Мне необходимо очистить строку от предлогов. Возникли проблемы... '/' - здесь не могу сообразить! using System; using...

Очистить строку консоли
Даны строчки консоли Надо последнюю строчку стереть и записать новые данные. Читал, можно через \r заполнить пробелами, но нигде не смог...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru