0

我正在尝试将结构的一部分传递给客户端并且很难使用它。我使用以下打印语句测试了我的案例 1 条件:

printf("%d %s", data[i].course, data[i].Dept);

这没有问题。现在我想做的是通过套接字发送它。我的发送声明是:

send(connected, send_data, strlen(send_data), 0);

现在我尝试了以下陈述:

send_data = data[i].couurse;
strcpy(send_data, data[i].course);
send_data = atoi(data[i].course);

并且要知道是否有效,都没有奏效。我知道必须有一种方法,并希望有人能告诉我如何。我已经包含了代码的相关部分:

int switchInput;
int i = 0;
int connected;
int sock;
int bytes_received;
int sin_size;
int true = 1;
int tempCourse = 0;
char send_data[BUF];
char recv_data[BUF];
char tempDept[5];
char tempDay[1];
char tempTime[1];
FILE *filePointer;
sched_record data[MAX_RECORD];
filePointer = fopen (BINFILE, "rb");

和:

 while(1) {

        bytes_received = recv(connected, recv_data, BUF, 0);
        recv_data[bytes_received] = '\0';
        switchInput = atoi(recv_data);

        switch(switchInput) {

        case 1:

            fread(data, sizeof(sched_record), MAX_RECORD, filePointer);
            fclose(filePointer);
            char send_data[] = "Enter Department Name";
            send(connected, send_data, strlen(send_data), 0);
            bytes_received = recv(connected, recv_data, BUF, 0);
            recv_data[bytes_received] = '\0';
            strcpy(tempDept, recv_data);
               for (i=0; i<MAX_RECORD; i++){
                if ((strcmp(tempDept, data[i].Dept)==0) && tempCourse != data[i].course){
                        send(connected, &data[i].Dept, sizeof(data[i].Dept), 0);
                        tempCourse = data[i].course;
                        send(connected, &tempCourse, sizeof(tempCourse), 0);
                }
            }

        break;

在这种特殊情况下,我需要发送课程和部门。还有更好的方法吗?这似乎有点乱。如果是这样,你能告诉我一个更简化的版本吗?

4

1 回答 1

2

您一定到处都有编译错误。

你不想atoi。你想要itoasprintf

但这可能是您真正想要的:

tempCourse = data[i].course;
send(connected, &tempCourse, sizeof(tempCourse), 0);

(您提供的地址tempCourse变量的地址及其在内存中的字节大小。请参阅发送

(虽然你可能需要担心网络字节顺序


或者,如果您希望将.coursestruct 成员转换为字符串,请尝试以下操作:

sprintf(send_data, "%d", data[i].course);
send(connected, send_data, strlen(send_data), 0);
于 2012-04-28T16:02:09.523 回答