2015-08-18 6 views
-2

Я получаю ошибку сегментации в следующем коде. Я не совсем понимаю эту ошибку.Ошибка сегментации C++ при назначении 2D-массива

cout<<"r="<<r<<"c="<<c<<endl; 
int i=0,k=0; 
for(int k=0;k<r;k++) 
    for(int j=0;j<c,str[i]!='0';j++) 
     { 
     (newl[k][j]=str[i]); //shows segmentation error on debugging 
      cout<<str[i];i++; 

     } 

Может ли кто-нибудь указать, в чем ошибка, которую я делаю?

+0

Не могли бы вы показать код для 'newl' и' str'? –

+0

Трудно сказать, что случилось, не видя, для чего установлены значения переменных, на которые вы зависите. –

+0

Добро пожаловать в переполнение стека! Пожалуйста, ** ** [ваш вопрос] с [mcve] или [SSCCE (короткий, самосохраненный, правильный пример)] (http://sscce.org) – NathanOliver

ответ

0

'0' буквально символ для цифры «ноль».

Нуль-терминатор, обозначающий конец строки C, равен '\0'.

+0

Спасибо за указание на эту глупую ошибку. То, что работает без перерывов, может сделать !!! : p Просто сошел с ума. –

0

Что я понимаю из вашего кода, что вы преобразовываете массив 1D в 2D-массив.

В этом случае ваш максимальный индекс 1D-массива должен быть больше или равен, зависит от вашего требования к столбцу row * в 2D-массиве.

Из кода я могу догадаться, что проблема с str [], которая считывает значение из-за границы.

Смежные вопросы