请高手指点一下错误!
#include <stdio.h> #define D "%c" #define N "\n" #define D3 D D D N main() { char a,b,c; printf("enter the a,b,c:\n"); scanf(D3,&a,&b,&c); putchar(a);putchar(b);putchar(c); getch(); }
"你的宏定义不好:
D3="%c""%c""%c""\n" 你想要的是D3="%c,%c,%c"这样才是正确的"
我一开始也是这么想,但是书上的例子的确就是用这种方法编的.
例:#define PR printf
#define NL "\n"
#define D "%d"
#define D1 D NL
#define D2 D D NL
#define D3 D D D NL
#define D4 D D D D NL
#define S "%s"
main()
{int a,b,c,d;
char string[]="CHINA";
a=1;b=2;c=3;d=4;
PR(D1,a);
PR(D2,a,b);
PR(D3,a,b,c);
PR(D4,a,b,c,d);
PR(S,string);
}
运行时输出以下结果:
1
12
123
1234
CHINA
就这个题目来说,,用宏定义真的变得更麻烦.主要是,如果我们把它们单独编成一个文件,当一个"格式库"
这样我们每次写程序就不用那么麻烦,只要每次用#include把这个文件放到自己编的程序里,也可以省很多劳动的啊!