печать члена возвращаемой структуры
У меня проблемы с печатью члена структуры, которая возвращается из функции:
#include <stdio.h>
struct hex_string
{
char a[9];
};
struct hex_string to_hex_string_(unsigned x)
{
static const char hex_digits[] = "0123456789ABCDEF";
struct hex_string result;
char * p = result.a;
int i;
for (i = 28; i >= 0; i -= 4)
{
*p++ = hex_digits[(x >> i) & 15];
}
*p = 0;
printf("%s\n", result.a); /* works */
return result;
}
void test_hex(void)
{
printf("%s\n", to_hex_string_(12345).a); /* crashes */
}
printf
позвони внутрьto_hex_string_
печатает правильный результат, ноprintf
позвони внутрьtest_hex
вылетает моя программа. Почему именно это? Это проблема на всю жизнь, или это что-то еще?
Когда я заменяюprintf
позвонить сputs(to_hex_string_(12345).a)
Я получаю ошибку компилятора:
invalid use of non-lvalue array
Что тут происходит?