我定义了一个结构体数组,
struct save_account//保存登录帐户密码
{
char account[10];
char password[10];
}users[10] = {0};
和两个数组:
a[10] ;pwd[10];
现在我要把值赋给这个结构体,该怎么做?下面两种可以吗?
1、strcpy(users[].account,a[]);
2、for(i = 0; i < 8;i++)
{
users[i].account = a[i];
users[i].password = pwd[i];
或者其他方法,在线等,谢谢大家!
strcpy(users[10].account,a[10]);是不是只是把数组中第十个元素复制?要用for循环赋值吗
for(i = 0; i < 10;i++)
{
strcpy(users[i].account,a);
strcpy(users[i].password,pwd);
}
循环有什么用呢?不是一整个数组a都赋给users.account吗?如果strcpy(users[i].account,a);不是一直把a的首元素复制给users[i].account十次吗?
首先你要知道, users[]本身是一个结构数组,他有10个元素,每个元素都是一个结构.而这个循环中i的值是会改变的, 所以在循环体中的users[i]会遍历整个结构数组users[].
然后,a并不是数组a[]的首元素, 这是c语言的一个语法, a表示的是数组a[]的首地址, 也可以说是数组a[]首元素的地址, 即a是指向数组a[]首元素的常指针. 注意这里, a是个常量, 是不可变的.
所以, strcpy(users[i].account,a);这句的意思是把数组a[]中的字符串复制到数组users[i].account[]中.
第二种好像不可以