我通过UDP连接以下列格式收到字符串
1 2 7
1 3 5
1 4 6
我想反序列化此字符串并将其写入以下类型的结构数组
typedef struct RV{
int server1;
int server2;
int weight;
}RV;
我正在使用以下功能来执行此操作。
void deserialize(RV** arr, char* msg){
int idx = 0;
char line[10];
while (fgets(line, sizeof line, msg)){
RV rv;
rv.server1 = atoi(strtok(line, " "));
rv.server2 = atoi(strtok(NULL, " "));
rv.weight = atoi(strtok(NULL,"\n"));
memcpy(arr[idx], &rv, sizeof(rv));
idx++;
}
}
当我尝试读取此数组时,我继续获得segmentation fault
。
答案 0 :(得分:0)
是的,我确实得到了一个警告,但是无法想出另一种阅读方法 一行一行。任何建议。
你可以改变
while (fgets(line, sizeof line, msg)){
到
int n;
while (sscanf(msg, "%9[^\n]\n%n", line, &n) > 0)
{
msg += n;
这会降低\n
,但我们无论如何也不需要它们。