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