Скажем, у меня есть следующая программа:
#include <stdio.h>
typedef unsigned int el_type;
int main(void)
{
el_type n;
scanf("%d", &n);
printf("%d\n", n);
return 0;
}
Есть ли символ преобразования, который я могу использовать вместо %d
в этой ситуации, чтобы напечатать n?
%u
вместоunsigned int
. en.cppreference.com/w/c/io/fscanf en.cppreference.com/w/c/io/fprintftypedef
не создает новый тип. Все, что он делает, это определяет псевдоним. После ``typedef unsigned int el_type,
el_type` иunsigned int
неразличимы.Вы можете определить макросы
#define PRI_el_type "u"
и#define SCN_el_type "u"
, а затем использоватьscanf("%" SCN_el_type, &n);
иprintf("%" PRI_el_type "\n", n);
, аналогично использованию макросов, определенных#include <inttypes.h>
.