Я делаю модель лесного пожара, которая моделирует распространение огня. Вместо того, чтобы показывать лес графически, нам было поручено вывести лес на консоль в виде обычного текста. В результате на выходе очень трудно различить, поэтому я решил покрасить различные элементы, как таковойПочему я получаю segfault при конкатенировании строк?
int i;
int j;
//Initialize a string for what will be outputted to the screen
char output[2000]="";
//Initialize strings that will be concat'd to the main string
char tree[]= "\033[22;31m T \033[22;30m";
char burn[]=" B";
char dirt[]=" D";
char fizzled[]=" F";
char newl[]="\n";
for(i=0;i<25;i++){
for(j=0;j<25;j++){
if(forest[i][j]==1){
strcat(output, tree);
}else if(forest[i][j]==500){
strcat(output,burn);
}else if(forest[i][j]==-1){
strcat(output,fizzled);
}
else{
strcat(output,dirt);
}
}
strcat(output,newl);
}
printf("------------------------------------------\n");
printf("%s",output);
Здоровые деревья окрашены по-разному в первой итерации, как они должны. Однако он возвращает segfault, и я не знаю, почему это происходит.
Благодаря
Как определяется лес? Где происходит segfault? –
Каждое дерево использует 19 символов; другие используют 2 символа. У вас есть 25 * 25 = 625 записей, чтобы вписаться в массив байтов 2000. Вы не можете позволить себе даже 100 деревьев в вашем лесу, не исчерпывая место в 'output'. –