這個問題是我在項目中遇見最簡單,卻調試時間最長的一個問題。
下面我把我的解決方法發出來供大家參考。
這是結構體定義。
1 typedef struct PersonData{ 2 int use_id; 3 char name[10]; 4 int passwd; 5 int passwds; 6 int money; 7 int flag; 8 }Recv_MSG;
下面是對從lineedit上讀取的QString進行轉換到char name[10]里面去。
1 char* ptr; 2 QByteArray ba; 3 QString str = ui->namelineEdit->text(); 4 ba = str.toLatin1(); 5 ptr = ba.data(); 6 memcpy(p->name,ptr,10); //就是這一句,必須加,不然不只是把指針指向了值,並沒有賦值
重點就是最后一句,memcpy(),把ptr例轉換的值,賦給p->name。不然,你要是傳遞結構體,就只是傳過去一個指針,並沒有內容。