首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这两个编码不是一样的吗,为什么运行时会不一样的?该如何解决

2012-03-25 
这两个编码不是一样的吗,为什么运行时会不一样的?我只改了#definef%d%s%f#include stdio.h#definef%d%s%

这两个编码不是一样的吗,为什么运行时会不一样的?
我只改了#define   f   %d   %s   %f

#include <stdio.h>
#define   f   %d   %s   %f
struct   student
{int   num;
char   name[20];
float   score;
};
void   print(struct   student   stu[])
{int   i;
float   sum=0,aver;
for(i=0;i <2;i++)
{if(stu[i].score> =60)
printf( "f ",stu[i].num,stu[i].name,stu[i].score);
sum=sum+stu[i].score;
}
aver=sum/2;
printf( "%f\n ",aver);
}

void   main()
{
struct   student   stu[2];
struct   student   *p;
int   i;
printf( "please   input   students 's   information: ");
for(i=0;i <2;i++)
scanf( "f ",&stu[i].num,&stu[i].name,&stu[i].score);
p=stu;
print(p);


#include <stdio.h>
#define   f   "%d   %s   %f "
struct   student
{int   num;
char   name[20];
float   score;
};
void   print(struct   student   stu[])
{int   i;
float   sum=0,aver;
for(i=0;i <2;i++)
{if(stu[i].score> =60)
printf(f,stu[i].num,stu[i].name,stu[i].score);//这里当然也改了
sum=sum+stu[i].score;
}
aver=sum/2;
printf( "%f\n ",aver);
}

void   main()
{
struct   student   stu[2];
struct   student   *p;
int   i;
printf( "please   input   students 's   information: ");
for(i=0;i <2;i++)
scanf(f,&stu[i].num,&stu[i].name,&stu[i].score);//这里当然也改了p=stu;
print(p);
}

[解决办法]
#define f %d %s %f

scanf( "f ",&stu[i].num,&stu[i].name,&stu[i].score);

这样的f不是宏,没有宏替换

[解决办法]
宏定义不替换字符串里的东西.
独立的应用才能替换.

热点排行