菜鸡求助大佬,为什么printf()影响了结构函数的定义

Xpectations 2018-03-13 11:50:16
void add()
{
Card card;
char aName[32]={0};
char aPwd[20]={0};
printf("---------添加卡---------\n");
printf("请输入卡号(1~18):\n");
scanf("%s",card.aName);
/*if(getSize(aName)>=18)
{
printf("用户输入非法!");
return ;
}
copy(aName,card.aName,18);
*/
printf("请输入卡密(1~8):\n");
scanf("%s",card.aPwd);
/*if(getSize(aPwd)>=18)
{
printf("用户输入非法!");
return ;
}
copy(aPwd,card.aPwd,8);
*/
printf("请输入余额(RMB):\n");
scanf("%f",&card.fBalance);
card.fTotalUse=card.fBalance;
card.nDel=0;
card.nUseCount=0;
card.nStatus=0;
card.tStart=card.tEnd=card.tLast=time(NULL);
printf("---------添加的卡信息如下---------\n");
printf("卡号\t密码\t状态\t开卡金额\n");
printf("%s\t%s\t%d\t%0.1f\n",card.aName,card.aPwd,card.nStatus,card.fBalance);

}


如果把printf()放在Card card前,无法运行,显示card未定义,请问这是为什么?
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2018-03-14
  • 打赏
  • 举报
回复
因为你用的是c语言 C89 中,任何复合语句(块作用域)中的声明必须出现在块的开头,在任何语句之前。 注意“任何语句”,包括printf
自信男孩 2018-03-14
  • 打赏
  • 举报
回复
变量要遵循先声明后使用的原则,有些编译器(版本较早的)还会要求,变量声明(定义时声明)必须在前面,不论变量在函数的什么地方使用,都要遵循声明在前,否则编译不成功。
考拉一枚 2018-03-14
  • 打赏
  • 举报
回复
跟C语言版本有关 换个不同编译器这个问题可能就不存在了
zhangyiant 2018-03-14
  • 打赏
  • 举报
回复
语言定义的,声明在前。你用。c++就没问题。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧