2 wangfuwei88 wangfuwei88 于 2013.12.23 22:29 提问

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

#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
oyljerry   Ds   Rxr 2015.01.04 22:46

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!