Форум программистов, компьютерный форум CyberForum.ru

При повторном использовании в strncmp не сохраняется введенный символьный массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Степень двойки для отражения размера памяти http://www.cyberforum.ru/cpp-beginners/thread1164486.html
Коллеги глупый но все же интересный вопрос! Один гибибайт состоит из 1073741824 байт памяти. Почему разработчики выбрали такое странное число (степень двойки) вместо какого нибудь хорошо запоминающегося, например 1000000000? Это просто табу для удобства или есть другое объяснение этому феномену? Я лично не вижу ни аппаратных ни программных преград для этого( даже несмотря на двоичную систему...
C++ Пирамидальная сортировка массива, счетчики не могу понять куда счетчики:сравнения и обменов.помогите пожалуйста. вот код сортировки: template<class T> void SiftDown(T* const heap, int i, int const n) { //Просеивает элемент номер i вниз в пирамиде heap. //n -- размер пирамиды //Идея в том, что вычисляется максимальный элемент из трёх: // 1) текущий элемент // 2) левый потомок // 3) правый потомок http://www.cyberforum.ru/cpp-beginners/thread1164475.html
C++ Найти точку между зарядами, где равнодействующая равна 0
Доброго времени суток, заседатели форума. У меня возникла проблема с этой задачей. Вы не могли-бы мне с ней помочь? Условие прилагаю: На прямой находятся 3 положительных заряда величины q1,q2,q3, так, как показано на рисунке 49. Определить расстояния от заряда q1 до точек, в которых равнодействующая сил отталкивания зарядами q1 q2 q3 некоторого четвертого положительного заряда равна 0. Даны...
Возврат к началу switch C++
Здравствуйте. Есть программа, включающая в себя ... switch(x) { case 1: {}; case 2: {}; case n: {}; default: {};
C++ Изменение размера созданного вектора http://www.cyberforum.ru/cpp-beginners/thread1164450.html
Как изменить размер вектора? Например, проводим какие-нибудь вычисления и результатов получилось больше, чем размер вектора. Как в таком случаи увеличить вектор?
C++ Проверить список запущенных процессов на наличие нужного Задача: 1. Все просто - проверить список запущенных процессов на наличие нужного мне процесса , если найден возвращаем правду если не найден выходим , ВНИМАНИЕ!!! функцию нужно вызывать постоянно , в потоке , в моём случае это таймер , так как .net приложение , но это не важно , если в обычной дллки в потоке вызывать - тоже самое. Код: BOOL CheckProcess(const char * procName) { HANDLE... подробнее

Показать сообщение отдельно
quasi
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 16
02.05.2014, 23:54     При повторном использовании в strncmp не сохраняется введенный символьный массив
Подскажите, по какой причине символьный массив char, заполненный через cin.get(), при повторном использовании в strncmp стирает введенные значения
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
ifstream in("voc.txt");
    ofstream out("voc1.txt");
    if (!in)
    {
        cout << "Файл voc.txt не быд открыт\n";
    }
    else
    {   
        char ch[MaxLn];
        char voc[MaxLn];
        int ln, pos;
        int i = -1;
        bool w = 0;
        cout << "Введите слово, которое следует удалить:\n";
        while (!w)
        {
            i++;
            if (i == MaxLn)
            {
                break;
            }
 
            ch[i] = cin.get();
            w = (ch[i] == '\n');
        }
        if (i == MaxLn)
        {
            cout << "Конец ввода строки.\n";
            ch[i - 1] = '\n';
            
        }
        
        ln = i;
        bool del = false;
        while (!in.eof())
        {
            in.getline(voc, 30);
            if (strncmp(voc, ch, ln) == 0) // первый раз ch еще имеет значения, потом уже нет
            {
                del = true;
                break;
            }
                out << voc << endl;
            
        }
        if (del == false)
        {
            cout << "Слово отсутствует в словаре\n";
        }
        else
        {
        while (!in.eof())
        {
            in.getline(voc, 30);
            out << voc << endl;
        }
        cin.clear();
        cin.sync();
        out.close();
        in.close();
        remove("voc.txt");
        rename("voc1.txt", "voc.txt");
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru