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

Access violation и размерность символьного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с русским языком в консольном приложении http://www.cyberforum.ru/cpp-beginners/thread594625.html
Как можно осуществить ввод-вывод текста на русском языке в консоли? Просто я в программе использовал уже тексты в файлах на русском языке, ввел их там, все как положено(использовал еще setlocale(LC_ALL, "RUS");) Но когда я пытаюсь ввести, например, название для поиска по введенным данным, на русском языке, то программа, когда я вывожу то, что ввел для проверки, выдает мне т.н. ерунду. Как...
C++ Нужно разобраться с программой В общем дана программа, мне нужно разобрать ее всю и полностью :) Нужно объяснить каждую строчку что за что отвечает и что делает, думаю для таких профи, как Вы это будет не трудно сделать, можете откомментировать каждую строчку? Заранее благодарен. Вот собственно код программы: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define n 2 http://www.cyberforum.ru/cpp-beginners/thread594624.html
C++ Сколько слов, состоящих только из прописных букв, содержится в сообщении
Всем привет.Есть такое вот задание: Подсчитать сколько слов, состоящих только из прописных букв, содержится в сообщении, и в каждом таком слове изменить все буквы на заглавные. if( OpenDialog1 ->Execute()) { Memo1->Lines->LoadFromFile("text.txt"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit3Click(TObject *Sender)
C++ Как записывать и считывать не POD типы данных из бинарного файла?
Есть класса в котором часть полей не базовых динамических типов например vector list и подобные. Как записать экземпляр класса в бинарный файл чтобы потом его нормально считать? Через boost serialization? Или есть другие варианты? Если делать через fwrite\fread считываются только поля базового типа. :( Добавлено через 10 часов 24 минуты Пример проблеммы class A { int val;
C++ Решения по Дейтелам http://www.cyberforum.ru/cpp-beginners/thread594591.html
Ребят, такой вопрос, купил книгу Deitel H.M., Deitel P.J. / Дейтел Х.М., Дейтел П.Дж. - Как программировать на С++, очень много заданий, что хорошо, но нет к ним решения в самой книге, то есть не получается себя проверить. Решения распространяются абсолютно бесплатно, но только для учителей, преподователей и тд, чтоб студенты не могли списать, но мне то для самопроверки надо, если кто надыбал...
C++ Округлить выводимые данные Надо сделать что если х у вводиш милионами числами выводило норм.. спасайте вообще хз как #include <iostream> #include <math.h> #include <conio.h> #include <iomanip> using namespace std; struct koord{double x,y;}; class vektors{ double x1,y1,x2,y2; public: void sl(double x1, double y1, double x2,double y2); подробнее

Показать сообщение отдельно
The_Immortal
1548 / 484 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
04.06.2012, 01:32  [ТС]     Access violation и размерность символьного массива
Finale,
Цитата Сообщение от The_Immortal Посмотреть сообщение
И еще вопросик: где можно найти описание функции strcat?
Под этим я подразумевал как функция работает, т.е. ее содержимое

Цитата Сообщение от Finale Посмотреть сообщение
читал уже, вроде всё правильно
А что правильно?

Цитата Сообщение от Finale Посмотреть сообщение
Вы пробовали 2ую строку до 21 увеличивать?
Да, разумеется, это решает проблему. Но я-то хочу разобраться в чем дело Я все прекрасно понимал, пока Вы мне не сообщили, что у Вас все работает с 20-ью символами... И это меня запутало.

Цитата Сообщение от Finale Посмотреть сообщение
символ конца строки он добавляет в 256-строку(в вашем случае), так что там нарушений доступа быть не может
Это при успешном склеивании. А так, на этом этапе:

Цитата Сообщение от The_Immortal Посмотреть сообщение
C++
1
strcat(szString1, szString2);
функция не видит конца у szString2 (если задавать и вводить 20 символов).

Добавлено через 5 минут
Finale,
Цитата Сообщение от Finale Посмотреть сообщение
В итоге передаётся 21 символ, превышается размер и программа лезет в чужую память, вызывая ошибку
Неее На этапе занесения в массив ошибки-то не возникает.
Она происходит, когда
Цитата Сообщение от The_Immortal Посмотреть сообщение
функция не видит конца у szString2
т.е. она доходит до 20го символа, заносит его, переходит на 21 - там ожидается /0, а там мусор - она и его заносит и т.д., пока не натыкается на закрытый блок.

Я думаю, что так.

Добавлено через 3 минуты
Цитата Сообщение от Finale Посмотреть сообщение
А у меня это срабатывало, ибо запускал программу в Sandbox-е Avast-а =)
Ииии? Как это объясняет?

Добавлено через 12 минут
Дак и к тому же никто мне не запрещает использовать strncat:

C++
1
strncat(szString1, szString2,20);
Но все-таки хотелось бы точно знать из-за чего возникает ошибка.

Прав ли я тут или нет:

Цитата Сообщение от The_Immortal Посмотреть сообщение
Она происходит, когда функция не видит конца у szString2
т.е. она доходит до 20го символа, заносит его, переходит на 21 - там ожидается /0, а там мусор - она и его заносит и т.д., пока не натыкается на закрытый блок.
Я думаю, что так.
 
Текущее время: 19:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru