我正在尝试根据基于另一个# define计算其值的#define来指定sscanf()调用中变量的宽度。
当TEST定义仅为单个数字时,它可以工作,但是当它成为计算时,代码会失败。让TEST调用包含计算的另一个函数也无法正常工作。
我正在使用的代码:
#include <stdio.h>
#define A 3
#define TEST FUN()
#define FUN() (A + 2)
#define STR(X) _STR(X)
#define _STR(x) #x
int main()
{
char input[] = "Test123";
char output[10];
sscanf(input, "%" STR(TEST) "s\n", output);
printf("%s\n", output);
return 0;
}
我在这里缺少什么?
input
和output
被交换了。在scanf中,目标字符串是第一个参数。 - Roberto Caboni