Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/125: Рейтинг темы: голосов - 125, средняя оценка - 4.71
13 / 10 / 1
Регистрация: 27.03.2011
Сообщений: 164

решил изучить с++

27.03.2011, 17:19. Показов 28430. Ответов 179
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет, решил начать изучать с++, скачал MSVC++ 2010 express, какую литературу вы посоветуете для изучения данного языка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2011, 17:19
Ответы с готовыми решениями:

Решил изучить новую низкоуровневую область в программировании, что посоветуете?
Решил на досуге начинать изучать что - то новое для повышения так сказать образованности :) Конечно же есть более реалистичные...

Какие книги лучше всего изучить чтобы хорошо изучить с++
Хотелось бы открыть тему, либо если она уже есть подскажите ссылку. Хочу собрать список книг чтобы изучить профессионально с++, если...

Хочу изучить C++
Начал читать книгу С++ на начинающих можно сказать чайников. Не могу скомпилировать. Хотел бы найти знающего человека ля помощи и...

179
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
13.05.2011, 20:09
Студворк — интернет-сервис помощи студентам
stdcout, http://progs.biz/cpp/cpp/lessons/033.aspx
2
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
14.05.2011, 01:25
Извиняюсь за то, что пишу сюда снова.
Ввожу текст в окно редактирования, ввожу имя файла в предназначенное для этого кнопку,
нажимаю кнопку "Сохранить".
В отдельных случаях сохраняет, в других вылетает непонятная ошибка. Это вроде как-то связано с размером введённого текста, хотя не уверен.

ОС Windows инициировала точку останова в wp10may.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в wp10may.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит wp10may.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки
Вот фрагмент:
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
if (!(iTemp = SendMessage(hwndFilename, EM_GETLINE, 0, (LPARAM) szFileName)))
                    MessageBox(hwnd, "Введите имя файла!", szAppName, MB_OK);
            else
            {
                if (IDYES == MessageBox(hwnd,
                        "Вы точно хотите сохранить файл под таким именем?",
                                szAppName, MB_YESNO))
                {
                    szFileName[iTemp] = '\0';
                    strcpy(szTemp, szAppName);
                    strcat(szTemp, "       Сохранение...");
                    SetWindowText(hwnd, szTemp);
                    SetCursor(LoadCursor(NULL, IDC_WAIT));
                    
                    file = fopen(szFileName, "w");
 
                    iLines = SendMessage(hwndEditor, EM_GETLINECOUNT, 0, 0);
                    iMaxLength = 0;
                                        /* Определяем максимальную длину
                                            строки в окне редактирования.    */
                    for (i = 0; i < iLines; ++i)
                    {
                        iTemp = SendMessage(hwndEditor, EM_LINELENGTH, i, 0);
                        if (iTemp > iMaxLength)
                            iMaxLength = iTemp;
                    }
                    szPerLine   = (char *) malloc(iMaxLength + 2);
                                        /* Записываем в файл все строки поочерёдно. */
                    for (i = 0; i < iLines; ++i)
                    {
                        iTemp = SendMessage(hwndEditor, EM_GETLINE, i, (LPARAM) szPerLine);
                                                /* На случай, если в конец строки
                                                    szPerLine не добавляется завершающий ноль,
                                                    думал, что проблема в этом. */
                        szPerLine[iTemp] = '\0'; 
                        fprintf(file, "%s", szPerLine);
                    }
                    free(szPerLine);
 
                    fclose(file);
 
                    SetWindowText(hwnd, szAppName);
                    SetCursor(LoadCursor(NULL, IDC_ARROW));
                }
            }
Добавлено через 3 минуты
Это всё в Visual Studio.
И после появления сообщения об ошибке, открывается файл dbgheap.c, и указывается последняя строчка в данной функции из того файла.
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
/***
*int _CrtIsValidHeapPointer() - verify pointer is from 'local' heap
*
*Purpose:
*       Verify pointer is not only a valid pointer but also that it is from
*       the 'local' heap. Pointers from another copy of the C runtime (even in the
*       same process) will be caught.
*
*Entry:
*       const void * pUserData     - pointer of interest
*
*Return:
*       TRUE - if valid and from local heap
*       FALSE otherwise
*
*******************************************************************************/
extern "C" _CRTIMP int __cdecl _CrtIsValidHeapPointer(
        const void * pUserData
        )
{
        if (!pUserData)
            return FALSE;
 
        if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader), FALSE))
            return FALSE;
        /* Вот она. */
        return HeapValidate( _crtheap, 0, pHdr(pUserData) );
}
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
05.06.2011, 13:51
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 13:56
stdcout, новый вопрос - новая тема.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 14:10
Цитата Сообщение от stdcout Посмотреть сообщение
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
Открой cmd и вбей туда pause
Обязательно API? Есть std::cin.get(), к примеру.
1
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 16:47
Цитата Сообщение от stdcout Посмотреть сообщение
если в подключённом к проекту хедере не добавить пустую строчку в конец...
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:01
Цитата Сообщение от Deviaphan Посмотреть сообщение
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
А где в стандарте подобное требование написано?
В Билдере иногда проскакивает как раз такая ошибка - типа обнаружен конец файла, причем именно в системном хедере.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 19:11
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:23
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
Ок, пороюсь. Спасибо.
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
05.06.2011, 19:27
Ну вот, например, C++ Standard ANSI ISO/IEC 14882:2003
Раздел 2 Lexical conventions
Параграф 2.1 Phases of translation
Пункт 2
Each instance of a new-line character and an immediately preceding backslash character is deleted,
splicing physical source lines to form logical source lines. If, as a result, a character sequence that
matches the syntax of a universal-character-name is produced, the behavior is undefined. If a source
file that is not empty does not end in a new-line character, or ends in a new-line character immediately
preceded by a backslash character, the behavior is undefined.
2
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
05.06.2011, 22:36
diagon, да API, потому что на C нужно, а не C++.
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
07.06.2011, 17:45
Никто не знает, примерно как можно реализовать функцию getch()? Ведь реализована же она как-то в conio.h. Или там не через C?
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
07.06.2011, 18:02
Если приложение консольное, то в Windows можно использовать _getch() из conio.h. На других платформах это может быть реализовано по другому. Для GUI приложения аналога быть не может, там совсем другая модель исполнения.
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:04
Код не кроссплатформенный получится.
C
1
scanf("*");
При нажатии на ентер окошко захлопнется. Чем не вариант?
2
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
07.06.2011, 18:15
Мне нужна была функция, которая ждёт нажатия любой клавиши и возвращает её код.
Это не настолько важно, просто, хотелось попробовать реализовать или узнать, как могли её реализовать авторы библиотеки conio.h.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:31
Можете скачать исходники ncurses, там реализована getch() для линукса. А исходники conio.h вы врядли найдете=)
Вроде еще можно ассемблерной вставкой сделать, здесь есть что-то похожее.
1
Bekcha
02.07.2011, 15:22
Olejeg85, вы слишком наивны, если думаете, что с++ можно изучить за месяц. Там слишком много сложных и тонких мест. Это не Basic, который месяц и изучил почти полностью. С++- язык для профессионалов. Например, я вожусь с консольными приложениями уже почти полтора года и ещё есть, что изучать. А если вам необходимо освоить с++ на хорошем уровне(основы), то я готов вам подсобить. Могу абсолютно бесплатно научить вас осоновам с++. Если предложение вас заинтересовало, то пишите на dr.andrey-kalinin2011@yandex.ru(особенно, если вы школьник).
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
29.08.2011, 14:56
Никто не знает, примерно как можно реализовать функцию getch()? Ведь реализована же она как-то в conio.h. Или там не через C?
Сам спросил - сам отвечу. В книге Харта прочитал про функции для работы с консолью. Вот один из вариантов реализации getch() из <conio.h> для Windows.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int MyGetch()
{
    char   buffer[1] = { 0 };
    HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
 
    if (hIn != INVALID_HANDLE_VALUE)
    {
        DWORD  dwNumber;
        DWORD  dwOldMode;
 
        GetConsoleMode(hIn, &dwOldMode);
        SetConsoleMode(hIn, ENABLE_PROCESSED_INPUT);
        ReadConsole(hIn, buffer, 1L, &dwNumber, NULL);
        SetConsoleMode(hIn, dwOldMode);
    }
    return ((int) (unsigned char) buffer[0]);
}
1
 Аватар для OstapBender
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
29.08.2011, 15:37
stdcout, так а зачем вам?
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
29.08.2011, 16:22
OstapBender,
stdcout, так а зачем вам?
да так, незачем. просто, до того, как узнал о функция WinAPI для работы с консолью, реализация этой функции казалась загадочной.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2011, 16:22

2 изучить работу с массивом
Нам задали две лабораторные по С++ , с которыми у меня возникли трудности Вторая состоит из двух частей(задание прилоено ниже в лаб...

Как изучить WinSock
Есть ли годная литература для c++?

Cтоит ли после изучения Си++ изучить Си
Подскажите, стоит ли после изучения Си++ изучить Си? Ведь в Си++ поддерживаются все сишные команды (например, alloc, realloc и т.д.) Но в...

Стоит ли изучить программирование в стиле С?
Стоит ли изучит программирование в стиле С? В книге написано про строки в стиле С и настоятельно рекомендуется не использовать их при...

Как школьнику изучить программирование?
Самостоятельно изучила основы С и С++. Как продолжить изучение, если ты школьник? Идти на дорогостоящие курсы нет денег.


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

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru