Я начинающий программист, но обычно я могу решить свои проблемы. На этот раз я решил проблему, но она все еще ставит меня в тупик. Друг предложил мне попросить об этом сообщество.
Я пытаюсь напечатать числа в C. У меня есть функция, чтобы сделать это, используя sprintf. Числа никогда не должны быть больше 2 цифр, поэтому я использую 2-символьный буфер. Почему-то здесь моя логика терпит неудачу, потому что это вызывает бесконечный цикл, изменяя одну из переменных, передаваемых в sprintf, но увеличение размера буфера решает проблему.
Вот код ошибки:
#include <stdio.h>
void printarray(int array[][4]) {
int y;
int z;
char buf[2];
for (y=0; y<4; y++) {
for (z=0; z<4; z++) {
sprintf(buf, "%d", array[y][z]);
printf("buf is %s, y is %d and z is %d\n",buf,y,z);
}
}
}
int main() {
int arr[4][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,0} };
printarray(arr);
return 0;
}
как только у добирается до 2, оно возвращается к нулю, таким образом, бесконечный цикл. изменение buf [2] на buf [8] решает проблему.