Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 35

Прочитать никнейм из файла и после использования - удалить

20.01.2014, 01:10. Показов 2632. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется такой код. к нему нужно написать цикл. Существует файл Nicknames.txt в котором на каждой строчке написано по нику. смысл цикла таков. Из файла Nicknames.txt берется первая строка с ником и подставляется в переменную Nickname, если выполняется это
C++
1
 sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
то после этой процедуры надо удалить использованный ник из файла Nicknames.txt и подставить следующую строчку с ником в переменную Nickname, если же выполняется условие else, то нужно использующуюся строку с ником переместить в конец файла Nicknames.txt, а в переменную NewNickname подставить следующую строчку с ником. вот сам код
C++
1
2
3
4
5
6
7
8
9
if(!iConnectionRequested)
        {
            if(!iGettingNewName)
                sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
            else
                sampConnect(settings.server.szAddr, settings.server.iPort, NewNickname, settings.server.szPassword, pRakClient);
 
            iConnectionRequested = 1;
        }
Написал довольно таки бредово. Если что не понятно спросите.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2014, 01:10
Ответы с готовыми решениями:

Из текстового файла прочитать четные числа и записать их в другой файл без использования массива (код С++)
Код есть только перед чтением файла нужно его создать, внести 15 чисел и закрыть, через ofstream. #include <iostream> #include...

Прочитать все строки из файла и удалить все после двоеточия в каждой строке
Подскажите пожалуйста, есть текстовый документ в нем содержится предположим 1000 строк, надо что бы программа прочитала все строки и...

Удалить файл после использования
Привет. Помогите пожалуйста удалить файл. я использовал рисунок, затем сохранил изменив егго с другим названием и теперь надо удалить...

27
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 35
23.01.2014, 22:56  [ТС]
Студворк — интернет-сервис помощи студентам
GuGo1991, main.cpp(160): error C2065: of: необъявленный идентификатор
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
23.01.2014, 22:58
C++
1
ofstream of("Nicknames.txt");
Точно написали?
1
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 35
23.01.2014, 23:03  [ТС]
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
string value[100];
    int counter = 0;
    ifstream f("Nicknames.txt");
    while(true)
    {
        if(!f.eof())
        {
            f >> value[counter];
            counter++;
        }
        else
            break;
    }
         if(!iConnectionRequested)
             ofstream of("Nicknames.txt");
    for(int j = 0; j < counter - 1; j++)
    {
        of << value[j] << endl;
    }
 
    {
        int loop = 0;
        if(loop < counter - 1)
        {
            int i = 0;
            string element = value[i];
            char Nickname[20];
            strcpy(Nickname, element.c_str()); // Преобразование string в char
            
            if(!iGettingNewName)
            {
                
sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
Log( Nickname );
                for(int j = i; j < counter - 1; j++)
                {
                    if(value[j + 1] == "")      //
                        break;                  //
                    string temp;                //  Элемент устанавливаем в конец массива
                    temp = value[j];            //  и уменьшаем значение массива на 1,
                    value[j] = value[j + 1];    //  тем самым "имитируем" удаление
                    value[j + 1] = temp;        //
                }
                counter--;
                loop--;
            }  
            else
            {
                
               sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
               Log(Nickname);
                for(int j = i; j < counter - 1; j++)
                {
                    if(value[j + 1] == "")      //
                        break;                  //
                    string temp;                //   Элемент устанавливаем в конец массива
                    temp = value[j];            //
                    value[j] = value[j + 1];    //
                    value[j + 1] = temp;        //
                }
                
            }
            loop++;
            iConnectionRequested = 1;  
        }
    }
Добавлено через 36 секунд
GuGo1991, вроде написал
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
23.01.2014, 23:12
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
string value[100];
int counter = 0;
ifstream f("Nicknames.txt");
while(true)
{
    if(!f.eof())
    {
        f >> value[counter];
        counter++;
    }
    else
        break;
}
if(!iConnectionRequested)
{
    int loop = 0;
    if(loop < counter - 1)
    {
        int i = 0;
        string element = value[i];
        char Nickname[20];
        strcpy(Nickname, element.c_str()); // Ïðåîáðàçîâàíèå string â char
            
        if(!iGettingNewName)
        {
            sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
            Log( Nickname );
            for(int j = i; j < counter - 1; j++)
            {
                if(value[j + 1] == "")      //
                    break;                  //
                string temp;                //  Ýëåìåíò óñòàíàâëèâàåì â êîíåö ìàññèâà
                temp = value[j];            //  è óìåíüøàåì çíà÷åíèå ìàññèâà íà 1,
                value[j] = value[j + 1];    //  òåì ñàìûì "èìèòèðóåì" óäàëåíèå
                value[j + 1] = temp;        //
            }
            counter--;
            loop--;
        }  
        else
        {               
            sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
            Log(Nickname);
            for(int j = i; j < counter - 1; j++)
            {
                if(value[j + 1] == "")      //
                    break;                  //
                string temp;                //   Ýëåìåíò óñòàíàâëèâàåì â êîíåö ìàññèâà
                temp = value[j];            //
                value[j] = value[j + 1];    //
                value[j + 1] = temp;        //
            }               
        }
        loop++;
        iConnectionRequested = 1;  
    }
}
 
ofstream of("Nicknames.txt");
for(int j = 0; j < counter - 1; j++)
{
    of << value[j] << endl;
}
Должно работать
1
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 35
23.01.2014, 23:17  [ТС]
GuGo1991, ВСЕ!!! ЗАРАБОТАЛО!111!!! СПАСИБО ВАМ! КАК Я МОГУ ВАС ОТБЛАГОДАРИТЬ?
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
23.01.2014, 23:24
javse95, не за что. Главное что заработало )
1
0 / 0 / 0
Регистрация: 02.08.2013
Сообщений: 35
24.01.2014, 00:10  [ТС]
GuGo1991, ах вот, есть еще один моментик. Расскажу смысл в общих чертах.
Изначально в программе полюбому будет посылаться сначало
C++
1
2
3
if(!iGettingNewName)
        {
            sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
так как else может сработать в том случае, если iGettingNewName присвоится 1. Так что получается допустим у меня в текстовом файле находятся строчки
C++
1
2
3
4
Nickname1
Nickname2
Nickname3
Nickname4
Берется первая подставляется и отправляется sampConnect, далее , если на сервере есть игрок с именем Nickname1, то сервер присылает ответ REJECT_REASON_BAD_NICKNAME. и соответсвенно iGettingNewName присваивается 1, и выполняется условие else. И выходит то что Nickname1 удаляется из текстовика и используется Nickname2, который допустим не занят на сервере. И получается то что программа перемещает Nickname2 в конец текстового документа. Вообщем делает наоборот, ник который должен перемещаться в конец документа удаляет, а который должен быть удален, перемещает в конец. Как я понял вот в этой процедуре
C++
1
2
3
4
5
6
else if(byteRejectReason==REJECT_REASON_BAD_NICKNAME)
    {
        iGettingNewName = true;
        Log( "Неправильный ник. Смена ника  ");
        resetPools(1, 0);
    }
надо дописать, чтобы используемый на данный момент Nickname перемещался в конец документа.
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
24.01.2014, 03:49
Получается надо ещё раз проверить значение iGettingNewName
после работы функции sampConnect в первый раз
C++
1
2
3
4
5
6
7
8
9
10
11
if(!iGettingNewName)
{
    sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
    if(iGettingNewName)   // В этом случае
        break;            // выполнится else
    ...................
}
else
{
    ...................
}
Добавлено через 24 минуты
Хотя не знаю как отреагирет цикл. Посмотрим после компиляции

Добавлено через 6 минут
Думаю этот вариант сработает корректней всего (вместо else вставьте условие if(iGettingNewName)):
C++
1
2
3
4
5
6
7
8
9
10
11
12
if(!iGettingNewName)
{
    sampConnect(settings.server.szAddr, settings.server.iPort, Nickname, settings.server.szPassword, pRakClient);
    if(!iGettingNewName)
    {
        ...................
    }
}
if(iGettingNewName)
{
    ...................
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2014, 03:49

Удалить dll после использования
public static extern int someshit(); Каким образом можно освободить длл, чтобы потом её удалить?

Как прочитать из файла несколько символов и удалить
Есть файл неизвестного мне размера, он может быть безобидный 2кб, а может быть и 2Гб, 1 - 2 раза файл такого размера в память и выскакивает...

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

Удалить числа из файла, без использования дополнительных массивов и файлов
Всем привет, насколько я понимаю, само удаление из файла и не удаление вовсе, открываем файл и переписываем его в другой пропуская какую-то...

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru