Здравствуйте, гость ( Вход | Регистрация )
Игорь | Дата 30.10.2010, 20:29 |
Спасибо Вам большое! Очень познавательно. Есть что новое для себя взять) |
|
Алексей1153 | Дата 30.10.2010, 20:02 |
Я даже не понял почему. символы, заключённые в кавычки, являются СТРОКОЙ. Такая строка в общем случае размещается в сегменте данных (его менять нельзя, как раз тот сигнал и вылетел у тебя) и представляет собой массив символов между кавычками + завершающий нулевой символ. Само же выражение строка - это указатель на const char например, const char* p="123";// в памяти строка будет такая: {0x31,0x32,0x33,0} , указатель на символ 0x31 запишется в p |
|
Игорь | Дата 30.10.2010, 19:51 |
Попробую по порядку. Я пишу клиент, который, в данном коде, принимает имя и пароль. Этот клиент должен назначить под это имя учетной записи пароль, который передал сервер. Ход моей логики: Принимаю строку (пусть даже массив символов) и записываю в переменную Надо составить команду для командной строки, например, в виде: "net user Администратор 123", где "net user " команда, "Администратор" имя пользователя, "123" новый пароль Составленную команду надо передать в командную строку для выполнения. Переменную "а" я ввел только из-за того, что забыл как добавлять пробел Поставил фигурные скобки из-за того, что в начале у меня компилятор ругался, писал что массив надо поместить в фигурные скобки. Когда Вы (Алексей1153) еще раз написали пример, то у меня уже компилятор не ругался. Я даже не понял почему. |
|
kwisp | Дата 30.10.2010, 19:31 |
Гость_Игорь_ код с циклами непонятен ни капли. зачем так делать ? опиши по-подробнее задачу словами. если ты из сигнала получаешь QString, а функция system принимает const char*, то в классе QString есть специализированные методы для преобразования .toAscii().constData() - вернет const char* |
|
Алексей1153 | Дата 30.10.2010, 19:31 |
Игорь, а я вовсе не так показывал. Откуда у тебя квадратные и фигурные скобки взялись? Цитата const char* user[]={"Администратор"}; const char* pass[]={"123"}; а тут вообще капец Цитата const char* a[]={" "}; const char* qwe2[]={"net user "}; это должны быть переменные, а не константы. короче:
для чего тебе массив "a" - я не понял И, всё-таки, расскажи про задачу, а то хрень какую-то пишешь... |
|
Игорь | Дата 30.10.2010, 19:11 |
Сигнал был где первый цикл for(i=0;user[i]!=0;i++)qwe2[9+i]=user[i]; | |
Игорь | Дата 30.10.2010, 19:09 |
При отладочной компиляции: Цитата Приложение остановлено, так как оно получило сигнал от операционной системы. Сигнал: SIGSEGV Назначение: Segmentation fault При обычной компиляции: Цитата Запускается С:\Qt\2010.05\qt\Clients-build-desktop\debucj\Clients.exe... C:\Qt\2010.05\qt\C3^ents-huild-desktop\dehutj\Clients.exe завершился с кодон -1073741819 Если убрать комментарии с system(qwe2); то ошибка: "cannot convert 'const char**' to 'const char*' for argument 'Г to 'int system(const char*)'" Убираю со всех переменных слово const, ошибка "cannot convert char** to const char* for argument 1 to int system(const char*)" |
|
Алексей1153 | Дата 30.10.2010, 18:37 |
так передавай как const char* да и всё а вытащить указатель на строку можно так: constData() |
|
Игорь | Дата 30.10.2010, 18:34 |
Тут идея вот в чем, переменные user и pass будут передаваться этой программе строкой, поэтому я заморачиваюсь со стрингом | |
Алексей1153 | Дата 30.10.2010, 18:26 |
имхо, нужно сделать как в начале, только вот так const char* user="Строчка"; const char* user="Администратор"; const char* pass="123"; const char* qwe2="net user "; |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.4.2024, 7:32 |