这就是代码:
#define TAM_NOME_PRODUTO 50
[...]
struct produto
{
char nome_produto[50+1];
[...]
};
typedef struct produto Produto;
[...]
Produto *novo;
novo=malloc(sizeof(Produto));
[...]
scanf("%TAM_NOME_PRODUTO[^\n]", novo->nome_produto);
[...]
gcc指责scanf:
produto.c:61:3:警告:未知转换类型字符'T'格式为[-Wformat] produto.c:61:3:警告:格式参数太多[-Wformat-extra-args]
我认为定义不能正常工作。如何修复代码使其工作?
答案 0 :(得分:0)
在scanf中,百分比(%)符号具有特殊含义,并且后跟一个与相应类型匹配的格式字符。虽然您尝试使用"%50",但这是一个字符串文字,因此宏名称只是此上下文中的普通字符串。为了扩展它,您需要使用相邻字符串文字的隐式连接,并使用字符串标记符号#
。