本文转载于:https://blog.csdn.net/myfamily_it/article/details/81407114
这个问题是我在项目中遇见最简单,却调试时间最长的一个问题。
下面我把我的解决方法发出来供大家参考。
这是结构体定义。
-
-
typedef
struct PersonData{
-
int use_id;
-
char name[
10];
-
int passwd;
-
int passwds;
-
int money;
-
int flag;
-
}Recv_MSG;
-
下面是对从lineedit上读取的QString进行转换到char name[10]里面去。
-
char* ptr;
-
QByteArray ba;
-
QString str = ui->namelineEdit->text();
-
ba = str.toLatin1();
-
ptr = ba.data();
-
memcpy(p->name,ptr,
10);
//就是这一句,必须加,不然不只是把指针指向了值,并没有赋值
重点就是最后一句,memcpy(),把ptr例转换的值,赋给p->name。不然,你要是传递结构体,就只是传过去一个指针,并没有内容。