Я использовал этот тип соглашения много раз в моем коде в прошлом:
strcpy ( cTmpA, "hello" );
sprintf ( cTmpA, "%s world", cTmpA );
Недавно я переключил свой устаревший компилятор C на Visual Studio 2005 и обнаружил, что у меня есть искаженная строка, полученная из приведенного выше кода. Затем мне пришло в голову, что, возможно, поведение sprintf() не определено жестко, если один из входов соответствует выходной строке.
Является ли приведенный выше код действительным K & R C? Если нет, как мне найти все места в моем коде, где произошел этот тип вызова sprintf()?