Форум программистов, компьютерный форум 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
05.06.2012, 03:37  [ТС]     Access violation и размерность символьного массива
Я еще больше понял!
Цитата Сообщение от The_Immortal Посмотреть сообщение
strcat находит этот символ черт знает где - и натыкается на закрытый блок. А возможно, что и не успевает найти этот /0 - записывает весь мусор подряд, натыкаясь среди этого мусора на закрытый блок памяти. Но может повезти и она успешно наткнется на /0, но тогда все равно на выходе получится ерунда.
Все-таки какой-то скомканный конец, вам не кажется?

Вот более четкий:

Итак, рассматриваем
C++
1
strcat(szString1, szString2);
Напоминаю: в szString1 у нас сейчас содержится: " - /0", а в szString2 "01234567890123456789 - /0" (подчеркнутое - дублирование szString1)
Как заметил глубокоуважаемый Avazart, конец строки szString2 состоит из szString1, в связи с этим изменение szString1 будет приводить к изменению конца строки szString2 (и наоборот).
Поехали.
Берем " - /0" и добавляем туда '0' от szString2 (/0 разумеется перезаписываем). szString1 теперь у нас: " - 0", НО и szString2 у нас теперь: "01234567890123456789 - 0" (т.е. /0 мы и тут перезаписали) и т.д. и т.д. Когда пройдем первый "круг", то szString2 будет иметь вид:
"01234567890123456789 - 01234567890123456789
А szString1 такой:
" - 01234567890123456789" и так далее до тех пор, пока не нарвемся на закрытый блок

Я знаю, что этот бред никто читать не будет, но главное, что я разобрался

Единственное, что я не смог понять, так это почему происходит такая связь между szString1, szString2 в случае если у szString2 пожмотничать с размерностью... Друг за другом идут что ли... Вот это не ясно.

Добавлено через 1 минуту
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
Нифига не понял из вами сказаного...
Ну я не знаю как это все по-другому объяснить
Вроде выше объяснил

Добавлено через 20 минут
Цитата Сообщение от The_Immortal Посмотреть сообщение
Единственное, что я не смог понять, так это почему происходит такая связь между szString1, szString2 в случае если у szString2 пожмотничать с размерностью... Друг за другом идут что ли... Вот это не ясно.
Действительно, в памяти szString1 идет сразу за szString2. Соответственно, если их не разделять между друг другом нулевым символом, то szString2 будет включать содержимое szString1 и изменять его (при изменении "конца" у szString2 - и наоборот).

Таким образом, скрин отсюда легко объяснить. Я тогда задавался вопросом:
Цитата Сообщение от The_Immortal Посмотреть сообщение
странно... А почему тут 'a' (из первой строки) вдруг на /0 перезаписалась?
Дело в том, что после ввода 20 символов в szString2, на szString2[20] автоматом поместился символ /0, как подсказал нам Toshkarik (т.е. это вовсе не "рандомный мусор", как я предполагал изначально), а на этом месте уже находилось szString[1] (т.к. в памяти эти переменные идут друг за другом). Вот и произошла перезапись.

Теперь everything is clear!


Avazart, низкий Вам поклон, что направили в нужное русло (вероятно, сами того не подозревая)
 
Текущее время: 09:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru