Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
1

Заменить строки массивом массивов чаров

12.12.2012, 17:33. Просмотров 633. Ответов 6
Метки нет (Все метки)

Подразумевается создание массива строк, а точнее - массива массивов чаров, чтобы сделать код расширяемым в будущем. Смысл кода в том, что робот управляется путём создания в определённом каталоге файлов, имена которых являются командами. Робот файл удаляет, команду выполняет и всё повторяется сначала. Что ещё посоветуете?

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
const char* goAhead = "C:\\my_robot\\GOAHEAD";
const char* turnLeft = "C:\\my_robot\\TURNLEFT";
const char* turnRight = "C:\\my_robot\\TURNRGHT";
 
bool FileExists(const char* fname) {
    return ::GetFileAttributesA(fname) != DWORD(-1);
}
 
bool DelFile(const char* fname) {
    if( FileExists(fname) ){
        while( ::DeleteFileA(fname) == 0 )  Sleep(100);
        return true;
    }
    return false;
}
 
int GetOrder() {
    if ( FileExists(goAhead) )  return 1;
    if ( FileExists(turnLeft) )  return 2;
    if ( FileExists(turnRight) )  return 3;
    return 0;
}
 
bool DelOrder() {
    return ( DelFile(goAhead) || DelFile(turnLeft) || DelFile(turnRight) );
}
 
int WaitOrder() {
    int Order;
    do {
        Sleep(100);
        Order = GetOrder();
    } while ( Order == 0 );
    if ( DelOrder() )   return Order;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 17:33
Ответы с готовыми решениями:

Умножение массива чаров
#include <iostream> using namespace std; int main() { char a; ...

Очистить массив чаров
#include "stdafx.h" #include <algorithm> #include <iostream> #include...

Считывание чаров из cin происходит не корректно
Доброго времени суток! В процедуре void Enter(char* massive) считываю чары в...

Считать символы из вектора в массив чаров
Задача из вектора string перекидать значения в массив чаров, каждый элемент...

Есть куча рандомных чаров к примеру 100млн
Есть куча рандомных чаров к примеру 100млн какой алгоритм их отсортирует...

6
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
12.12.2012, 17:44 2
Класс std::string не подходит вместо массива строк Си?
И непонятно, зачем ковыряться с названиями файлов? Выходит, что две одинаковые команды он выполнить не может. Не проще сделать один фаил и уже из него считывать последовательность команд?
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
12.12.2012, 18:52  [ТС] 3
Цитата Сообщение от Croessmah Посмотреть сообщение
Класс std::string не подходит вместо массива строк Си?
Мне бы не хотелось использовать дополнительные классы без крайней нужды. Честно говоря, и так сойдёт, как есть, но всё же хотелось бы чуть поумнее организовать это всё. Например, чтобы перебирать команды/файлы в цикле.

И непонятно, зачем ковыряться с названиями файлов? Выходит, что две одинаковые команды он выполнить не может. Не проще сделать один фаил и уже из него считывать последовательность команд?
Не имеет смысла. Команды подаются по одной. Потом файл стирается и прога ждёт следующую команду. По некоторым причинам мне так удобнее. К тому же проверка существования файла гораздо проще и быстрее, чем чтение из него.
0
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
15.12.2012, 18:10 4
Цитата Сообщение от Vtulhu Посмотреть сообщение
Не имеет смысла. Команды подаются по одной. Потом файл стирается и прога ждёт следующую команду. По некоторым причинам мне так удобнее.
Другими словами, одновременно в данной папке не может находится две одинаковые команды. Значит в одно время, одна подпрограмма проверяет есть ли фаил, выполняет команду, удаляет фаил, вторая - как-то генерирует команды и создает файлы?
Цитата Сообщение от Vtulhu Посмотреть сообщение
К тому же проверка существования файла гораздо проще и быстрее, чем чтение из него.
Очень, очень сомнительно.
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
17.12.2012, 11:32  [ТС] 5
Цитата Сообщение от Croessmah Посмотреть сообщение
Другими словами, одновременно в данной папке не может находится две одинаковые команды.
И две разные - тоже не могут. Специфика всего процесса такова, что эти ситуации невозможны и бессмысленны.

Значит в одно время, одна подпрограмма проверяет есть ли фаил, выполняет команду, удаляет фаил, вторая - как-то генерирует команды и создает файлы?
Всё правильно, за исключением того, что это не две подпрограммы, а две программы, причём на разных языках. И даже исполнение программ очень разное (DLL и скрипт). Этим и объясняется межпроцессное взаимодействие через файлы.

Очень, очень сомнительно.
Вы хотите сказать, что WinApi-функция GetFileAttributes исполняется дольше, чем цикл fopen-fgets-fclose? Да и в любом случае, даже если дольше, то вызвать одну функцию проще, чем огород городить с чтением, парсингом и т.д.
0
Croessmah
++Ͻ
14739 / 8422 / 1596
Регистрация: 27.09.2012
Сообщений: 20,713
Записей в блоге: 2
Завершенные тесты: 1
19.12.2012, 09:43 6
Цитата Сообщение от Vtulhu Посмотреть сообщение
чем цикл fopen-fgets-fclose?
в цикле будет только считывание строки из файла, а открытие и закрытие будет единожды.
Цитата Сообщение от Vtulhu Посмотреть сообщение
что WinApi-функция GetFileAttributes исполняется дольше
Проверьте в цикле.
Цитата Сообщение от Vtulhu Посмотреть сообщение
то вызвать одну функцию проще, чем огород городить с чтением
никто не мешает написать свою функцию и вызывать её. Думаете, что GetFileAttributes очень просто устроен?
0
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
19.12.2012, 12:55  [ТС] 7
Цитата Сообщение от Croessmah Посмотреть сообщение
в цикле будет только считывание строки из файла, а открытие и закрытие будет единожды.
Я имел в виду всю последовательность fopen-fgets-fclose, не зацикливание в "программистском" смысле этого слова.

никто не мешает написать свою функцию и вызывать её. Думаете, что GetFileAttributes очень просто устроен?
Вы заставили меня задуматься... А как проверить существование файла с помощью fopen? А что касается своей функции, то у меня так и сделано, просто она состоит из одной строчки return (GetFileAttributes(fname) != DWORD(-1));
0
19.12.2012, 12:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2012, 12:55

Можно ли в массив чаров считать строку полностью?
У меня получается считать только первое слово, понимаю что есть функция...

Как сделать преобразование массива чаров в стринг
смотрите я хочу сделать прогу, которая типо подбирает пароль. Вот код: ...

Строки. Заменить символы - цифры на символ '*'. В заданной строке заменить подряд идущие пробелы
П.5.16.Правил Запрещено создавать темы с множеством вопросов во всех...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru