1

Мне нужна помощь, отлаживающая следующий блок кода. Этот блок кода дает мне ошибку ошибки сегментации только тогда, когда я пытаюсь присвоить соответствующее значение (char) квадратам [i] [j]. Как я могу это исправить?ошибка сегментации отладки в C++

for(int i=0;i<sides;i++){ 
    for(int j=0;i<sides;j++){ 
     squares[i][j] = ''; 
    } 
} 

Я объявил квадраты массив [] [] с помощью следующего кода перед вложенным для цикла:

char **squares = new(nothrow) char*[sides-1]; 
for(int i=0; i < sides-1; i++){ 
    squares[i] = new char[sides-1]; 
} 
+4

внутренний цикл имеет 'я jsantander

+4

вы создали только массивы сторон 1, но вы пытаетесь получить доступ к их« сторонам »в своем цикле (измените i Creris

ответ

2

гораздо лучший способ объявить пустой массив строк будет использовать String[] Не забывайте, что вы на C++. И в вашем случае, поскольку похоже, что вы хотите сделать квадратный массив, вы можете использовать std::array, если известны размеры или std::vector для неизвестных размеров. Теперь для строжайшего ответа используйте j во втором цикле вместо i.

for(int i=0;i<sides - 1;i++){ 
    for(int j=0;j<sides - 1;j++){ 
     squares[i][j] = ''; 
    } 
} 

Я сильно призываю вас, чтобы попытаться взглянуть на вашу проблему со строками, а не заново изобретать колесо. (Благодаря NathanOliver & jsantander за помощь)

+0

Не забывайте, что сказал @Creis : пределы цикла тоже неправильны. – jsantander

+0

@jsantander yeah, спасибо за напоминание, я меняю это прямо сейчас – Mekap

+0

Было бы даже лучше использовать 'std :: array', если размеры известны или' std :: vector' для неизвестных размеров. – NathanOliver

0

В вашем объявлении, попробуйте изменить я < стороны - от 1 до я < сторон

char **squares = new(nothrow) char*[sides-1]; 
for(int i=0; i < sides; i++){ 
    squares[i] = new char[sides-1]; 
} 
Смежные вопросы