包含字符数组的结构体的初始化:
如一个包含着字符数组的结构体,定义如下
typedef struct st_IGMInfo
{
/* IGM name */
char Name[100];
/* Mac address */
unsigned char MAC[6];
/* IGM location */
char Location[255];
int nIGMNumber;
} st_IGMInfo;
初始化方式一:
int main()
{
st_IGMInfo igminfo1 = {"hello", "who", "are you?", 8080};
......
}
赋值方法二:
int main()
{
st_IGMInfo igminfo2;
int hTargetFile = -1;
char *name = "hello";
char *mac = "who";
char *location = "are you?";
strcpy(igminfo2.Name, name);
strcpy(igminfo2.MAC, mac);
strcpy(igminfo2.Location, location);
igminfo2.nIGMNumber = 8080;
printf("igminfo2.Name = %s\n", igminfo2.Name);
printf("igminfo2.MAC = %s\n", igminfo2.MAC);
printf("igminfo2.Location = %s\n", igminfo2.Location);
printf("igminfo2.nIGMNumber = %d\n", igminfo2.nIGMNumber);
......
}
第二种方法确实麻烦了很多,最麻烦的是单个字符赋值的,如下面一段代码:
struct st {
char name[21];
int num;
};
input ()
{
int i=0;
char ch;
while(i!=21)
{
scanf("%d,%c\n",&i,&ch);
if(0<i<19)
i=19;
else i++;
struct.name[i]=ch;
}
}