Указатель x
, который печатается внутри dex_to_hex_converter()
, перемещен в середину массива символов. Так что печатается только половина строки.
char [] = "FFFFFFF0\0"
^
|
x
Когда вы возвращаетесь к main()
, указатель x
, который был передан по значению, возвращается к своему первоначальному значению, указывающему на начало массива символов, и, таким образом, вся строка снова выводится на печать.
char [] = "FFFFFFF0\0"
^
|
x
Чтобы получить доступ только к той части строки, которую вы хотите ... используйте возвращенный указатель, а не тот, который был передан:
printf("ret=%s\n", dec_to_hex_converter(-16, x));