Основная проблема с C и его строковыми функциями заключается в том, что вам приходится делать слишком много работы вручную.Вы также должны принять слишком много решений, когда пишете на C. Одна из тривиальных проблем - переполнение буфера.Рассмотрим этот код:
char buf[5]; // 5 chars, ok
sprintf(buf, "qwert"); // 5 letters, ok
У вас будут проблемы с этим кодом, так как, если говорить о строках, 5 символов означают 4 буквы + '\0'
.Итак, вы можете попробовать:
printf("'%s'\n", buf); // you'll probably get 'qwertIOUYOIY*&T^*&TYDGKUYTU&*#*#T^&#$T67...'
То, что вы делаете с вашим кодом, - это тривиальное переполнение буфера: -)
sprintf()
просто не может проверить размер buf
поэтому часть памяти, которая идет сразу после буфера, может быть повреждена.