说明:以下四个程序是通过“字符指针变量”或“字符数组”来指向或替代格式字符,可以通过事先定义好的“字符指针变量”或“字符数组”的字符串格式符来实现输入、输出格式的控制。
程序A、B、D正确,程序C错误
程序A √
main()
{
char format[]="a=%d, b=%g/n";
int a;
float b;
/*format="a=%d,b=%.2f";*/
scanf("%d%f",&a,&b);
printf(format,a,b); /*相当于printf("a=%d, b=%g/n",a,b);本语句中的format将在编译时替换为"a=%d, b=%g/n",有点类似于#define宏定义*/
}
程序B √
main()
{
char *format="a=%d, b=%g/n";
int a;
float b;
scanf("%d%f",&a,&b);
printf(format,a,b); /*相当于printf("a=%d, b=%g/n",a,b);本语句中的format将在编译时替换为"a=%d, b=%g/n",有点类似于#define宏定义*/
}
程序C ×
main()
{
char format[];
int a;
float b;
format="a=%d, b=%g/n"; /*允许通过初始化对字符数组赋值,绝不能单独采用赋值语句对数组整体赋值*/
scanf("%d%f",&a,&b);
printf(format,a,b); /*相当于printf("a=%d, b=%g/n",a,b);本语句中的format将在编译时替换为"a=%d, b=%g/n",有点类似于#define宏定义*/
}
程序D √
#include <string.h> /*因程序中要使用到strcpy函数,所以必须加上文件包含命令#include <string.h>*/
main()
{
char format[30]; /*必须定义字符数组的大小*/
int a;
float b;
strcpy(format,"a=%d, b=%g/n"); /*只能使用strcpy函数,而不能使用strcat函数*/
scanf("%d%f",&a,&b);
printf(format,a,b); /*相当于printf("a=%d, b=%g/n",a,b);本语句中的format将在编译时替换为"a=%d, b=%g/n",有点类似于#define宏定义*/
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huangyiyun/archive/2007/12/15/1937642.aspx