wangfuwei88 2013-12-23 14:29 采纳率: 0%
浏览 4531

关于全局变量的初始化问题

#include
#include
#include

//全局变量:用于保存通讯录
struct com{
char name[20];
char tel[15];
}temp;

void main()
{
FILE *fp; //定义一个指向文件的指针
char filename[20]; //用于保存文件路径
int choice, flag=1;
printf("请输入文件路径:\n");
scanf("%s", filename);
fp = fopen(filename,"wb");
if(!fp)
{
printf("错误!文件打不开!\n");
printf("按任意键退出");
getchar();
exit(0);
}
while(flag)
{
printf("请选择:按1添加/按0退出\n");
scanf("%d", &choice);
switch(choice)
{
case 0:
flag = 0;
break;
case 1:
printf("输入姓名:\n");
scanf("%s", temp.name);
printf("输入电话:\n");
scanf("%s", temp.tel);
fwrite(&temp, sizeof(struct com), 1, fp);
default:
break;
}

}
fclose(fp);
system("pause");
}
如果在定义结构体类型的时候直接用全局变量temp,字符数组可以自动初始化,其元素都为'\0',但是如果是在main函数里定义该结构体变量,则不会初始化,写进文件的结果会由于数组的未初始化而出现乱码。请问这如何解释?定义全局变量跟局部变量时初始化应该注意哪些问题?

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-01-04 14:46
    关注

    全局变量会初始化为0,而局部变量初始化为其他,所以需要自己初始化

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题