Это распространенная ошибка, которая приводит к перезаписи памяти в массиве символов. Так, например, в памяти после массива char могут быть некоторые целые или другой массив, и они будут перезаписаны текстом.
Смотрите хорошее подробное описание всей проблемы (переполнения буфера) здесь . Также есть комментарий, что некоторые архитектуры предоставляют подпрограмму snprintf с четвертым параметром, который определяет максимальную длину (в вашем случае x). Если ваш компилятор этого не знает, вы также можете написать его самостоятельно, чтобы убедиться, что вы не можете получить такие ошибки (или просто убедиться, что у вас всегда достаточно места).
Обратите внимание, что поведение после такой ошибки не определено и может привести к очень странным ошибкам. Переменные обычно выровнены в ячейках памяти, кратных 4, поэтому вы иногда не заметите ошибку в большинстве случаев, когда вы записали слишком много одного или двух байтов (т.е. забыли освободить место для NUL), но получите странные ошибки в других случаев. Эти ошибки трудно отладить, потому что другие переменные изменяются, и ошибки часто будут возникать в совершенно другой части кода.