Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C(类型说明符)中的scanf中使用定义_C_Visual Studio 2010_Scanf_C Preprocessor - Fatal编程技术网

在C(类型说明符)中的scanf中使用定义

在C(类型说明符)中的scanf中使用定义,c,visual-studio-2010,scanf,c-preprocessor,C,Visual Studio 2010,Scanf,C Preprocessor,所以我最初的代码是: scanf("%20s %20s", Player1.name, Player2.name); 如果我想使我的代码更灵活,我可以这样做,或者有类似的方法: .#define MAX_NAME_IN 20 ... scanf("%MAX_NAME_INs %MAX_NAME_INs", Player1.name, Player2.name); ... 替换为这样的预处理器 S(MAX_NAME_IN) => S_(20) => "20" scanf("%"

所以我最初的代码是:

scanf("%20s %20s", Player1.name, Player2.name);
如果我想使我的代码更灵活,我可以这样做,或者有类似的方法:

.#define MAX_NAME_IN 20
...
scanf("%MAX_NAME_INs %MAX_NAME_INs", Player1.name, Player2.name);
...

替换为这样的预处理器

S(MAX_NAME_IN) => S_(20) => "20"

scanf("%" S(MAX_NAME_IN) "s %" S(MAX_NAME_IN) "s", Player1.name, Player2.name);
↓
scanf("%" "20" "s %" "20" "s", Player1.name, Player2.name);

“%”“20”“s%”“20”“s”
被编译器解释为
“%20s%20s”

你能给我们举个你想读的例子吗。。。然后答案会更好你看到了吗:?不,
%MAX_NAME_INs
不会被
%20s
取代对于一个微软独有的解决方案,你可以使用
scanf_s
,就像在《哦,太棒了,你能解释一下这是怎么回事吗?为什么你不能在20中定义MAX_NAME_#定义s(x)#x?@Theo您的案例转换如下:
S(MAX\u NAME\u IN)
=>
“MAX\u NAME\u IN”
S(MAX_NAME_IN) => S_(20) => "20"

scanf("%" S(MAX_NAME_IN) "s %" S(MAX_NAME_IN) "s", Player1.name, Player2.name);
↓
scanf("%" "20" "s %" "20" "s", Player1.name, Player2.name);