问题描述
- 关于全局变量的初始化问题
-
#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,字符数组可以自动初始化,其元素都为'',但是如果是在main函数里定义该结构体变量,则不会初始化,写进文件的结果会由于数组的未初始化而出现乱码。请问这如何解释?定义全局变量跟局部变量时初始化应该注意哪些问题?
解决方案
全局变量会初始化为0,而局部变量初始化为其他,所以需要自己初始化