作业帮 > 综合 > 作业

Linux下的C 编程时出现warning: passing arg 1 of `strcpy' from incomp

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/08 09:51:41
Linux下的C 编程时出现warning: passing arg 1 of `strcpy' from incompatible pointer type是什么意思?
怎么改?源程序部分代码:void main()
{
//往用户列表中添加用户信息
strcpy(&users[0].username,"laura");
strcpy(&users[0].password,"123");
strcpy(&users[1].username,"linda");
strcpy(&users[1].password,"123");
strcpy(&users[2].username,"Mike");
strcpy(&users[2].password,"123");
int listenfd, confd;//监听时的返回值
struct sockaddr_in server;//server端的地址信息
struct sockaddr_in client0;//有用户来建立连接时,用户的地址信息
socklen_t addrlen;//sockaddr_in结构的长度
dataBase=(fileP)malloc(sizeof(file));//在主程序中首先给dataBase指针分配内存
dataBase->next=NULL;
if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket() error.");
exit(1);
}
warning:passing arg 1 of `strcpy' from incompatible pointer type
意思是,函数strcpy()函数的第一个参数引用不完全的指针类型
strcpy将后面的字符串复制给第一个参数(指针)所指向的一片存储区.
从你的代码来看,username,password...都是一个char 类型的值,你只是把这个值用取地址变为了char * ,但是,&username可用的地址空间只有1,而用strcpy所复制的字符串长度是不定的,
所以,strcpy()引用了非法地址,报警告.