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

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

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

Author24 — интернет-сервис помощи студентам
всем привет, решил начать изучать с++, скачал MSVC++ 2010 express, какую литературу вы посоветуете для изучения данного языка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2011, 17:19
Ответы с готовыми решениями:

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

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

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

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

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

ОС 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 163
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
05.06.2011, 13:56 164
stdcout, новый вопрос - новая тема.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.06.2011, 14:10 165
Цитата Сообщение от stdcout Посмотреть сообщение
У меня снова вопрос.
Как я слышал, среди стандартных функций нет функции наподобие getch() из conio.h. Но можно написать system("pause"). Хотелось бы узнать, как эта функция работает в Windows. Должна же быть среди API функций ф-ия подобная getch(), которая ожидает нажатия клавиши и возвращает её код.
И ещё. В Visual Studio 2010 Express если в подключённом к проекту хедере не добавить пустую строчку в конец, то при компиляции (или как это называется) выдаётся ошибка о том, что обнаружен непредвиденный конец файла в этом хедере. Если каретку перевести в конец файла и нажать ENTER, то компилируется нормально. Для чего это сделано, или это неполадка в самой студии (или что-то в этом роде)?
Открой cmd и вбей туда pause
Обязательно API? Есть std::cin.get(), к примеру.
1
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 16:47 166
Цитата Сообщение от stdcout Посмотреть сообщение
если в подключённом к проекту хедере не добавить пустую строчку в конец...
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:01 167
Цитата Сообщение от Deviaphan Посмотреть сообщение
Вообще-то, так должно быть во всех компиляторах, соответствующих стандарту.) Совершенно непонятное мне требование, поэтому оно игнорируется многими компиляторами.
А где в стандарте подобное требование написано?
В Билдере иногда проскакивает как раз такая ошибка - типа обнаружен конец файла, причем именно в системном хедере.
0
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
05.06.2011, 19:11 168
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.06.2011, 19:23 169
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не помню где, но точно помню, что есть такое. Настолько удивлён был, что до сих пор помню.)
Ок, пороюсь. Спасибо.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
05.06.2011, 19:27 170
Ну вот, например, 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 171
diagon, да API, потому что на C нужно, а не C++.
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
07.06.2011, 17:45 172
Никто не знает, примерно как можно реализовать функцию getch()? Ведь реализована же она как-то в conio.h. Или там не через C?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
07.06.2011, 18:02 173
Если приложение консольное, то в Windows можно использовать _getch() из conio.h. На других платформах это может быть реализовано по другому. Для GUI приложения аналога быть не может, там совсем другая модель исполнения.
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:04 174
Код не кроссплатформенный получится.
C
1
scanf("*");
При нажатии на ентер окошко захлопнется. Чем не вариант?
2
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
07.06.2011, 18:15 175
Мне нужна была функция, которая ждёт нажатия любой клавиши и возвращает её код.
Это не настолько важно, просто, хотелось попробовать реализовать или узнать, как могли её реализовать авторы библиотеки conio.h.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.06.2011, 18:31 176
Можете скачать исходники ncurses, там реализована getch() для линукса. А исходники conio.h вы врядли найдете=)
Вроде еще можно ассемблерной вставкой сделать, здесь есть что-то похожее.
1
Bekcha
02.07.2011, 15:22 177
Olejeg85, вы слишком наивны, если думаете, что с++ можно изучить за месяц. Там слишком много сложных и тонких мест. Это не Basic, который месяц и изучил почти полностью. С++- язык для профессионалов. Например, я вожусь с консольными приложениями уже почти полтора года и ещё есть, что изучать. А если вам необходимо освоить с++ на хорошем уровне(основы), то я готов вам подсобить. Могу абсолютно бесплатно научить вас осоновам с++. Если предложение вас заинтересовало, то пишите на dr.andrey-kalinin2011@yandex.ru(особенно, если вы школьник).
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
29.08.2011, 14:56 178
Никто не знает, примерно как можно реализовать функцию 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
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
29.08.2011, 15:37 179
stdcout, так а зачем вам?
0
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 209
29.08.2011, 16:22 180
OstapBender,
stdcout, так а зачем вам?
да так, незачем. просто, до того, как узнал о функция WinAPI для работы с консолью, реализация этой функции казалась загадочной.
0
29.08.2011, 16:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2011, 16:22
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
180
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru