Czy ciągi wejściowe i wyjściowe dla sprintf () mogą być takie same?

Używałem tego typu konwencji wiele razy w moim kodzie w przeszłości:

strcpy ( cTmpA, "hello" );
sprintf ( cTmpA, "%s world", cTmpA );

Niedawno zmieniłem mój starszy kompilator C na Visual Studio 2005 i odkryłem, że otrzymałem zniekształcony ciąg wynikający z powyższego kodu. Wtedy przyszło mi do głowy, że być może zachowanie sprintf () nie jest sztywno zdefiniowane, gdzie jedno z wejść pasuje do ciągu wyjściowego.

Czy powyższy kod jest prawidłowy K&R C? Jeśli nie, jak znaleźć wszystkie miejsca w moim kodzie, w których wystąpił ten typ wywołania sprintf ()?

questionAnswers(2)

yourAnswerToTheQuestion